可以将天蓝色的存储事件用于Web场

时间:2019-04-10 18:50:50

标签: c# azure azure-eventgrid

我想知道是否有人在Web场设置中使用了事件网格订阅(在Blob存储上)。

我已经使用混合连接在blob存储上创建了一个事件网格订阅。

如果您有多个(侦听器)应用程序,是否可以配置可以“命中”每个应用程序的事件网格订阅?

2 个答案:

答案 0 :(得分:0)

Azure事件网格是一个发布/订阅模型,用于基于订阅者(如逻辑连接性元数据)将事件推送(分发)给订阅者。换句话说,此Pub / Sub模型上没有侦听器。

在您的方案中,事件驱动的Blob存储中的事件通过混合连接推送到Azure中继服务。请注意,混合连接在端口443上使用带有SSL(https)的Websocket。可以在here中找到有关Azure中继混合连接协议的更多详细信息。

基于此协议,同一Azure Relay混合连接上的接收器将平衡,换句话说,Azure Relay混合连接不支持UDP端口。

针对您的方案(事件消息广播)的解决方案是使用 EventGridTrigger 函数,该函数具有SignalR Service输出绑定,作为事件驱动的Blob存储的订户。

更新

以下屏幕片段显示了基于AEG和SignalR Service(集成了EventGridTrigger函数)将事件从Blob存储广播到Web场服务器:

enter image description here

使用 SignalRService 扩展功能非常简单,请参见以下示例:

    #r "Microsoft.Azure.WebJobs.Extensions.SignalRService"

    using Microsoft.Azure.WebJobs.Extensions.SignalRService;

    public static async Task Run(string eventGridEvent, IAsyncCollector<SignalRMessage> signalRMessages, ILogger log)
    {
        log.LogInformation(eventGridEvent);

        await signalRMessages.AddAsync(
            new SignalRMessage
            {
                Target = "Broadcasting",
                Arguments = new[] {eventGridEvent }
            });  
    }

和function.json:

    {
        "bindings": [
         {
          "type": "eventGridTrigger",
          "name": "eventGridEvent",
          "direction": "in"
         },
         {
            "type": "signalR",
            "name": "signalRMessages",
            "hubName": "mySignalRHubName",
            "connectionStringSetting": "AzureSignalRConnectionString",
            "direction": "out"
         }
         ],
        "disabled": false
    }

答案 1 :(得分:0)

如果您不习惯使用Azure Tables,则另一个选择是将Cosmos DB与Azure Functions和SignalR结合使用。我在另一个项目中做了类似的事情,可扩展性强且接近实时。

Broadcast Real-time Updates from Cosmos DB with SignalR Service and Azure Functions