当RabbitMQ Delivery Tag溢出时会发生什么?

时间:2013-10-24 20:34:33

标签: rabbitmq amqp

RabbitMQ使用非负长(63位整数,因为仅非负数)称为传递标记来存储通过通道发送的消息数。如果您通过频道发送(2 ^ 63)+1条消息会怎样?

1 个答案:

答案 0 :(得分:13)

根据我的餐巾纸计算,假设maximum publish rate of 53,710 messages per second,你必须要发布总共7.06 x 10 ^ 13年,这比年龄大4个数量级。已知的宇宙。

换句话说,如果我们假设您可以以某种方式每个处理器周期发布3条消息,并且英特尔处理器每秒可以处理7,000,000,000条消息,那么它仍然需要将近84年。

因此,可以肯定的是,您将首先遇到其他问题。但是,如果您的RabbitMQ服务器能够长时间保持运行,那么您将获得奖品。

但严肃地说,如果这种情况发生,我想这取决于Erlang如何处理整数。 This post表示Erlang将耗尽内存 - 我不完全了解他们是如何实现这一目标的,但也许整个系统会爆炸?谁知道。在c#中,int只是在overflow之后滚动。