RabbitMQ для чата и многоадресной рассылки - PullRequest
0 голосов
/ 02 марта 2019

Предположим, у меня есть простое приложение чата, где некоторые клиенты могут публиковать сообщения на каком-то канале X, а некоторые клиенты хотят подписаться на все сообщения в X (многоадресная рассылка на основе каналов).

Буду ли я создавать разветвлениеОбмен для каждого канала или есть способ использовать тему для этого варианта использования?

Также новый клиент, добавленный в канал X, должен быть в состоянии прочитать последнее сообщение из X. Как это делается?

Будет ли он масштабироваться для миллионов каналов?

(Или мне лучше взглянуть на MQTT?)

1 Ответ

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

Тематический обмен RabbitMQ (с использованием pub / sub), безусловно, является опцией для создания такого шаблона распределения ... производители гарантируют, что ключ маршрутизации их сообщений соответствует "Каналу X", а потребители (через свои очереди) будутпривязать к этому обмену с соответствующим шаблоном.Это должно означать, что вам не нужно иметь определенный Exchange для каждого из ваших каналов.Но неизвестно, может ли он масштабироваться до миллионов каналов.

Если рассмотреть другие технологии обмена сообщениями, возможно, взгляните на Solace?(К вашему сведению, я работаю на них).На самом деле у нас есть бесплатный курс Udemy Dev, где вы создаете приложение для чата!https://www.udemy.com/fundamentals-of-solace-development/. Solace изначально поддерживает MQTT, если вы хотите пойти по этому пути, а также имеет встроенную возможность воспроизведения, которую можно использовать для извлечения последних n сообщений по заданной теме.

...