Я хочу знать, сколько максимальных очередей RabbitMQ может обрабатывать на одном сервере?
Это зависит от ОЗУ? Это зависит от процессов erlang?
Я хочу знать, сколько максимальных очередей RabbitMQ может обрабатывать на одном сервере?
Это зависит от ОЗУ? Это зависит от процессов erlang?
В брокерах RabbitMQ нет жестких ограничений. Брокер будет использовать все доступные ресурсы (если вы не установите ограничения для некоторых из них, они называются водяными знаками в терминологии RabbitMQ).
Есть некоторые ограничения, накладываемые самим Erlang, как максимальное количество одновременных процессов, но если вы теоретически можете достичь их на одном node, тогда всегда полезно использовать распределенные функции.
Существует много дискуссий о потребностях и ограничениях ресурсов RabbitMQ,
P.S. Однако есть предел протокола AMQP. Они описаны в разделе 4.9 Ограничения
Спецификации AMQP налагают эти ограничения на будущие расширения AMQP или протоколы из одного и того же формата на уровне провода:
- Количество каналов на соединение: 16-разрядный номер канала.
- Число классов протоколов: 16-разрядный идентификатор класса.
- Количество методов для каждого класса протокола: 16-разрядный идентификатор метода.
Спецификации AMQP налагают эти ограничения на данные:
- Максимальный размер короткой строки: 255 октетов.
- Максимальный размер длинной строки или таблицы полей: 32-разрядный размер.
- Максимальный размер полезной нагрузки кадра: 32-разрядный размер.
- Максимальный размер содержимого: 64-разрядный размер.
Сервер или клиент могут также налагать свои собственные ограничения на ресурсы, такие как как количество одновременных подключений, количество потребителей за канал, количество очередей и т.д. Это не влияет на функциональную совместимость и не указаны.
Этот пост может вам помочь:
http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-td26063.html
ИЗМЕНИТЬ
1) Максимальные очереди разрешены в RabbitMQ?
Тысячи (или даже десятки тысяч) очередей должны быть без проблем вообще, хотя каждый объект (например, очереди, обмены, привязки и т.д.), будет занимать память и/или дисковое пространство. По умолчанию Erlang будет обеспечить максимальное количество одновременных процессов (т.е. нитей) около 32768 IIRC. Каждая очередь управляется собственными процесс, и каждое соединение может привести к еще нескольким, поэтому, если вы планирование наличия большого количества активных очередей в одном node (?) и используя их все одновременно, тогда вам может понадобиться tweak аргументы эмулятора кролик передает VM, устанавливая + P на более высокий предел.
Вы также можете использовать много Gb только с накладными расходами для каждого очередь/соединение довольно быстро, так что вам понадобится довольно мясистый сервер для обработки миллионов обоих. Десятки тысяч не должны быть проблемы, при условии, что они вписываются в ОЗУ.