Предположим, у меня есть простое чат-приложение, в котором некоторые клиенты могут отправлять сообщения на некоторый канал X, а некоторые клиенты хотят подписаться на все сообщения в X (многоадресная рассылка на основе каналов).
Буду ли я создавать Fanout Exchange для каждого канала или есть способ использовать Topic для этого варианта использования?
Кроме того, новый клиент, добавленный в канал X, должен иметь возможность прочитать последнее сообщение от X. Как это делается?
Будет ли он масштабироваться для миллионов каналов?
(Или мне лучше взглянуть на MQTT?)





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