RabbitMQ – RabbitMQ可以在一台服务器上处理多less个队列?
我想知道RabbitMQ可以在单个服务器上处理多less个最大队列?
它依赖于RAM吗? 它依赖于erlang过程吗?
RabbitMQ代理内部没有硬编码限制。 经纪人将利用所有可用的资源(除非您对其中的一些设置了限制,他们被称为RabbitMQ术语中的水印 )。
Erlang本身存在一些限制,比如并发进程的最大数量,但是如果理论上可以在单个节点上访问它们,那么使用分布式特性总是一个好主意。
关于RabbitMQ资源的使用和限制有很多讨论,
- 一个经纪人可以在RabbitMQ邮件列表上支持多less个队列
- RabbitMQ队列中允许的最大消息数? 在RabbitMQ邮件列表上
- Rabbitmq -服务器故障的合理性能/规模预期
- rabbitmq的交易数量有限制吗? 在堆栈溢出
PS虽然有AMQP协议限制。 它们在4.9限制中有描述
AMQP规范对未来AMQP或协议的扩展从相同的线路级格式强加这些限制:
- 每个连接的通道数量:16位通道编号。
- 协议类的数量:16位类的id。
- 每个协议类的方法数量:16位方法ID。
AMQP规范对数据施加了这些限制:
- 短string的最大大小:255个八位字节。
- 长string或字段表的最大大小:32位大小。
- 帧有效载荷的最大大小:32位大小。
- 内容的最大大小:64位大小。
服务器或客户端也可能对自己的资源限制,例如同时连接的数量,每个信道的消费者数量,队列的数量等等。这些不影响互操作性并且没有被规定。
这篇文章可以帮助你:
http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-td26063.html
编辑
1)RabbitMQ中允许的最大队列数?
尽pipe每个对象(例如,队列,交换,绑定等)将占用一些内存和/或磁盘空间,但是成千上万(甚至数万)的队列应该完全没有问题。 默认情况下,Erlang会在32768 IIRC附近执行最大数量的并发进程(即轻量级线程)。 每个队列由自己的进程pipe理,每个连接可能会导致更多,所以如果你打算在单个节点(?)中有大量的活动队列并同时使用它们,那么你可能需要通过将+ P设置为更高的限制来调整仿真器参数rabbit传递虚拟机。
你也可能耗尽了很多Gb,而且每个队列/连接的开销都很快,所以你需要一个非常棒的服务器来处理数以百万计的数据。 成千上万的应该没有问题,只要他们适合内存。