5
RabbitMQ使用一个非负长整数(63位整数,因为只有非负数)称为递送标签,用于存储通过通道发送的邮件数量。如果您通过频道发送(2^63)+1条消息,会发生什么情况?当RabbitMQ的交付标签溢出时会发生什么?
RabbitMQ使用一个非负长整数(63位整数,因为只有非负数)称为递送标签,用于存储通过通道发送的邮件数量。如果您通过频道发送(2^63)+1条消息,会发生什么情况?当RabbitMQ的交付标签溢出时会发生什么?
根据我的餐后计算,假设为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#中,整数简单地在overflow后滚动。
是的,我知道这不会发送这么多的消息。我对如果你想要发生什么感兴趣。虽然我们都能想象会发生什么,但我正在寻找是否有人已经知道或可以指出我的参考。 –
鉴于您对问题的定义,不可能“不可能” - 不可能。但是,我确实尝试在我的答案的第二部分中进行理论化:)可能会设置一个测试,其中整数值被故意设置为(MaxValue-1)或某种东西,尽管我认为它会是学术演习。 – theMayer