RabbitMQ - RabbitMQ可以在一台服务器上处理多少个队列?

Raj*_* Sf 48 message-queue amqp rabbitmq

我想知道RabbitMQ在单个服务器上可以处理多少个最大队列?

它取决于RAM吗?它取决于erlang进程吗?

pin*_*ain 47

RabbitMQ代理中没有任何硬编码限制.代理将利用所有可用资源(除非您对其中一些资源设置限制,它们在RabbitMQ术语中称为水印).

Erlang本身存在一些限制,例如最大并发进程数,但如果理论上可以在单个节点上访问它们,那么使用分布式功能总是好主意.

关于RabbitMQ资源使用和限制的讨论很多,

PS虽然有AMQP协议限制.它们在4.9限制中描述

AMQP规范对来自相同线路级格式的AMQP或协议的未来扩展施加了这些限制:

  • 每个连接的通道数:16位通道号.
  • 协议类数:16位类ID.
  • 每个协议类的方法数:16位方法ID.

AMQP规范对数据施加了这些限制:

  • 短字符串的最大大小:255个八位字节.
  • 长字符串或字段表的最大大小:32位大小.
  • 帧有效负载的最大大小:32位大小.
  • 内容的最大大小:64位大小.

服务器或客户端也可以对资源施加其自己的限制,例如同时连接的数量,每个信道的消费者数量,队列的数量等.这些不影响互操作性并且未指定.


Gab*_*ele 22

这篇文章可以帮助你:

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

编辑

1)RabbitMQ中允许的最大队列?

数千(甚至数万)队列应该没有问题,尽管每个对象(例如,队列,交换,绑定等)将占用一些内存和/或磁盘空间.默认情况下,Erlang将在32768 IIRC附近强制执行最大数量的并发进程(即轻量级线程).每个队列都由自己的进程管理,每个连接可以产生更多,所以如果你计划在一个节点(?)中拥有大量的活动队列并同时使用它们,那么你可能需要通过将+ P设置为更高的限制来调整兔子传递VM的模拟器参数.

你也可能只是为每个队列/连接的开销很快耗尽许多Gb,所以你需要一个非常多的服务器来处理数百万个.成千上万应该没问题,只要它们适合RAM.

  • 正如你可以在帖子上看到的那样:"所以,如果你计划在一个节点中有大量​​的活动队列(?)并同时使用它们,那么你可能需要调整模拟器参数rabbit通过将+ P <新限制>设置为更高的限制来传递VM."因此,您必须创建一个真实的模拟,因为数字取决于活动..连接..然后您可以决定. (4认同)