- Order-Service: управляет заказами и предоставляет пользователям обновления статуса в режиме реального времени через концентратор SignalR (OrderHub).
Ресторанная служба: обновляет статус заказа (например, готовится, готов) и взаимодействует со службой заказов с помощью RabbitMQ. - Курьерская служба: управляет доступностью курьерской службы, назначает курьеров для заказов и должен отправлять пользователям обновления местоположения в режиме реального времени.
Текущая настройка:
- < li>Courier-Service получает детали заказа от Order-Service и обновления статуса от Restaurant-Service через RabbitMQ.
- Courier-Service управляет своим собственным внутренним состоянием для курьерских местоположений.
- Пользователи подписаны на центр SignalR компании Order-Service, чтобы получать обновления статуса заказа в режиме реального времени.
Вопрос:
Как мне настроить RabbitMQ и SignalR будут обрабатывать частые обновления в реальном времени в этом сценарии?
Возможные подходы:
- Событие Ретрансляция через RabbitMQ: пусть Courier-Service публикует обновления местоположения в качестве событий в RabbitMQ, которые Order-Service будет использовать, а затем транслировать пользователям через OrderHub.
- Прямые вызовы API: используйте HTTP/REST API от Courier-Service к Order-Service для каждого обновления местоположения, а затем транслируйте его из OrderHub.
- Объединительная плата SignalR: внедрите SignalR как в Courier-Service, так и в Order-Service, используя общую объединительную плату для синхронизации обновлений, но я не уверен, что это будет эффективно.
Прямые соединения WebSocket между службами (неустойчиво при масштабировании).
Двойные соединения на стороне клиента, при которых курьеры подключаются как к службе заказов, так и к курьерской службе для получения обновлений (высокая нагрузка на клиент).
Подробнее здесь: https://stackoverflow.com/questions/791 ... microservi