Использование брокера сообщений напрямую с клиентами конечного пользователя - PullRequest
0 голосов
/ 24 сентября 2019

Я хочу найти способ реализации push-сообщений от сервера нескольким конечным пользователям клиентам с одним и тем же сообщением.

Один из найденных вариантов - использовать message broker и использовать его для реализации шаблона pub/sub.То, в чем я не уверен, это то, что должно считаться потребителем в таком сценарии.

Я думал, что общая архитектура при использовании посредника сообщений:

Клиенты конечного пользователя <----> Сервер посредника сообщений <---> (клиенты и сервер могуттакже поговорите друг с другом о вещах, которые не связаны с тематическими сообщениями)

И процесс, который, по крайней мере, я думал, должен произойти так:

1) Клиент конечного пользователя регистрируется вконкретную тему, отправив исходное сообщение непосредственно посреднику сообщений.

2) Сервер получил сообщение о теме, которое, по его желанию, получит каждый конечный пользователь, поэтому он добавляет сообщение в тему.

3) Посредник сообщений мгновенно отправляет сообщение всем конечным пользователям сам без использования других служб push-сообщений, таких как SignalR, Pusher и т. Д. (Без их использования, что означает, что оно можетиспользовать его за сценой, но на самом деле разработчик не программирует отправку сообщений).

После этого я услышал, что потребитель должен быть не клиентом конечного пользователя, а другими серверами?

Правильно ли мое описание процесса?Или это что-то еще?

1 Ответ

0 голосов
/ 24 сентября 2019

Шаблон pub / sub звучит так, как вы хотите.Однако есть некоторые моменты, требующие пояснения.

Первая концепция, которую вам необходимо прояснить, это концепция клиента и сервера, взаимодействующих с брокером сообщений.С точки зрения брокера сообщений все, что к нему подключено , является клиентом.Как правило, клиенты могут создавать сообщения и / или потреблять сообщения;это оно.Работают ли ваши приложения как клиенты или серверы в каком-либо другом качестве в вашей общей архитектуре, не имеет значения, поскольку это связано с брокером сообщений.

Вот поясненное резюме с использованием вашего трехэтапного процесса:

  1. Один или несколько клиентов создают потребителя (иногда называемого «подписчиком») по интересующей их теме.
  2. Один или несколько клиентов создают сообщения на эту тему, например, для информированияпотребители / подписчики о каком-либо событии.
  3. Посредник рассылает сообщение каждому зарегистрированному потребителю / подписчику.

Вся эта работа выполняется исключительно через реализацию клиента обмена сообщениями.Другими словами, клиентские приложения должны использовать только реализацию клиента обмена сообщениями (например, клиент AMQP, клиент STOMP и т. Д.).Сам брокер будет отправлять фактическое сообщение потребителям / подписчикам, будь то через асинхронный «слушатель» или синхронный вызов метода для получения сообщения.Это считается основной функцией обмена сообщениями.Клиентскому приложению не нужно использовать какую-либо дополнительную библиотеку (например, SignalR или Pusher) для получения сообщения от посредника или для передачи сообщения от посредника клиенту.

...