RabbitMQ使用非负长(63位整数,因为仅非负数)称为传递标记来存储通过通道发送的消息数.如果您通过频道发送(2 ^ 63)+1条消息会怎样?
the*_*yer 14
根据我的餐巾纸计算,假设最大发布率为每秒53,710条消息,则必须发布总共7.06 x 10 ^ 13年,比年龄大4个数量级.已知的宇宙.
换句话说,如果我们假设您可以以某种方式在每个处理器周期发布3条消息,并且英特尔处理器每秒可以处理7,000,000,000条消息,那么它仍然需要将近84年的时间.
因此,可以肯定的是,您将首先遇到其他问题.但是,如果您的RabbitMQ服务器能够长时间保持运行,那么您应该获得奖励.
但严肃地说,如果这种情况发生在某种程度上,我认为这取决于Erlang如何处理整数.这篇文章 表明Erlang将耗尽内存 - 我不完全了解他们是如何实现这一目标的,但也许整个系统会爆炸?谁知道.在c#中,int 溢出后只会滚动.