Azure SignalR и веб-приложение Azure с несколькими экземплярами - PullRequest
0 голосов
/ 02 марта 2019

Мы разрабатываем ядро ​​ASP.Net, которое размещается как веб-приложение Azure.

Мы также используем службу Azure SignalR

Все прекрасно работает, пока у нас есть один экземпляр веб-приложения., но как только мы уменьшаем масштаб, у нас возникает следующая проблема:

  1. Из действия контроллера мы разрешаем IHubContext и отправляем сообщение клиенту Hub.Пока все отлично работает
  2. Клиент Hub принимает ответ и отправляет его конечной точке TheHub.

Проблема в том, что ответ может быть отправлен другому экземпляру Web App.Таким образом, мы отправляем запрос от экземпляра № 1, но ответ отправляется на экземпляр № 2 с вероятностью 50%, а экземпляр № 1 никогда не получает ответ

1 Ответ

0 голосов
/ 04 марта 2019

К сожалению, я не нашел надежного решения, которое не потребовало бы немного неуклюжих обходных путей

Но есть 2 решения, которые я мог бы предложить для этого сценария

  1. @LexLi предложил хороший подход для решения этой проблемы.Таким образом, вы можете сделать свое веб-приложение клиентом SignalR и сделать его членом группы.Таким образом, каждый экземпляр веб-приложения также является клиентом, и затем экземпляр, который получает ответ для клиента Hub, может передать этот ответ группе экземпляров веб-приложения

  2. Вы можете использовать темы Azure Service Bus.Так что после запуска экземпляр начнет подписываться на прослушивание темы.И затем, когда любой экземпляр получает ответ от клиента-концентратора, он помещает ответ в раздел служебной шины, а затем каждый экземпляр получает этот ответ из темы

Я надеялся, чтолучшее решение для такой проблемы

...