RabbitMQ - How many queues can RabbitMQ process on a single server?

I want to know how many maximum queues RabbitMQ can handle on a single server?

Does it depend on RAM? Does it depend on erlang processes?

+36
rabbitmq message-queue amqp
Apr 10 '14 at
source share
2 answers

There are no strict restrictions in RabbitMQ brokers. The broker will use all available resources (if you do not set restrictions for some of them, they are called watermarks in the terminology of RabbitMQ).

There are some restrictions imposed by Erlang itself, such as the maximum number of simultaneous processes, but if you can theoretically achieve them on one node, then it is always useful to use distributed functions .

There is a lot of discussion about the needs and limitations of RabbitMQ resources,

PS However, there is a limit to the AMQP protocol. They are described in section 4.9 Limitations.

AMQP specifications impose these restrictions on future AMQP extensions or protocols from the same wire-level format:

  • Number of channels per connection: 16-bit channel number.
  • Number of protocol classes: 16-bit class identifier.
  • Number of methods for each protocol class: 16-bit method identifier.

AMQP specifications impose these data restrictions:

  • Maximum short string size: 255 octets.
  • Maximum size of a long row or field table: 32-bit size.
  • Maximum frame payload size: 32-bit size.
  • Maximum content size: 64-bit.

The server or client can also impose its own resources restrictions, such as the number of simultaneous connections, the number of consumers per channel, the number of queues, etc. This does not affect interoperability and is not indicated.

+32
Apr 10
source share

This post can help you:

http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-td26063.html

EDIT

1) Are maximum queues allowed in RabbitMQ?

Thousands (or even tens of thousands) of queues should be without problems at all, although each object (for example, queues, exchanges, bindings, etc.) will occupy memory and / or disk space. By default, Erlang will provide a maximum number of simultaneous processes (i.e. threads) of about 32768 IIRC. Each queue is controlled by its own process, and each connection can lead to several more, so if you are planning on having a large number of active queues in one node (?) And using them all at the same time, then you may need to tweak the emulator arguments the rabbit passes VM, setting + P to a higher limit.

You can also use a lot of Gb with only overhead for each queue / connection rather quickly, so you'll need a pretty meaty server to handle millions of both. Tens of thousands should not be a problem, provided that they fit into RAM.

+15
Apr 10 '14 at
source share



All Articles