можно ли использовать события хранилища Azure для веб-фермы

#c# #azure #azure-eventgrid

#c# #azure #azure-eventgrid

Вопрос:

Я хочу знать, использовал ли кто-нибудь подписку на сетку событий (в хранилище больших двоичных объектов) в настройках веб-фермы.

Я создал подписку на сетку событий в хранилище больших двоичных объектов с гибридным подключением.

Если у вас есть несколько приложений (прослушивателей), можете ли вы настроить подписку на сетку событий, которая может «попадать» в каждое приложение?

Ответ №1:

Другой вариант, если вы не женаты на использовании таблиц Azure, — это использование Cosmos DB с функциями Azure и SignalR. Я сделал что-то подобное для другого проекта, очень масштабируемого и близкого к реальному времени.

Транслировать обновления в реальном времени из Cosmos DB с помощью службы SignalR и функций Azure

Ответ №2:

Azure Event Grid — это модель Pub / Sub для отправки (распространения) событий подписчикам на основе их подписки, такой как метаданные логического подключения. Другими словами, в этой модели Pub / Sub нет прослушивателя.

В вашем сценарии событие из хранилища больших двоичных объектов, управляемого событиями, передается в службу ретрансляции Azure с помощью гибридных подключений. Обратите внимание, что гибридные соединения используют Websockets на порту 443 с SSL (https). Более подробную информацию о протоколе гибридных подключений Azure Relay можно найти здесь.

На основе этого протокола ваши приемники в одних и тех же гибридных соединениях Azure Relay будут сбалансированы, другими словами, гибридные соединения Azure Relay не поддерживали порт UDP.

Решением для вашего сценария (трансляция сообщений о событиях) является использование функции EventGridTrigger с привязкой вывода SignalR Service в качестве подписчика для вашего хранилища больших двоичных объектов, управляемого событиями.

Обновить:

Следующий фрагмент экрана показывает трансляцию события из хранилища больших двоичных объектов на серверы веб-фермы на основе службы AEG и SignalR, интегрированной с функцией EventGridTrigger:

введите описание изображения здесь

Использовать расширение 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 }
            });  
    }
  

и функция.json:

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