#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
}