В RabbitMQ очереди довольно дешевые. Это эффективно облегченные процессы Erlang, и вы можете запускать от десятков до сотен тысяч очередей на одном обычном компьютере (то есть на моем ноутбуке). Конечно, каждый из них потребляет немного оперативной памяти, но неиспользованные в последнее время очереди будут в спящем режиме , поэтому они будут использовать как можно меньше памяти. Кроме того, если кролику не хватает памяти для сообщений, он отправит старые сообщения на диск.
Вышеуказанное относится только к одной машине. RabbitMQ поддерживает форму облегченной кластеризации . Когда вы объединяете несколько узлов Rabbit в кластер, каждый может видеть очереди и обмены на других узлах, но каждый запускает только свои собственные очереди. Таким образом, вы сможете иметь еще больше очередей! (до предела кластеров Erlang, который обычно составляет несколько сотен узлов). Таким образом, кластер образует логический брокер, распределенный по нескольким машинам; клиенты подключаются к нему и используют его прозрачно через любой из узлов.
Тем не менее, наличие одной длительной очереди для каждого пользователя кажется немного странным: в AMQP вы не можете просматривать сообщения, пока они находятся в очереди; Вы можете получать / использовать только те сообщения, которые удаляют их из очереди, и публиковать, которые добавляют в конец очереди. Таким образом, вы можете использовать AMQP в качестве маршрутизатора сообщений, но не можете использовать его в качестве базы данных сообщений.