根据我粗略的计算,假设最大发布速度为每秒53,710条消息(参见这里),你需要总共发布7.06 x 10^13年,这比已知宇宙的年龄还要大4个数量级。换一种说法,如果我们假设您能在每个处理器周期内发布3条消息,并且Intel处理器可以处理7,000,000,000条消息每秒,则仍需要近84年时间。因此,可以放心地得出结论,您将首先遇到其他问题。但是,如果您的RabbitMQ服务器能够保持运行那么长时间,那么您应该得到奖励。但是说真的,如果真的发生了这种情况,我想这取决于Erlang如何处理整数。 这篇文章表明,Erlang会耗尽内存 - 我不完全理解他们如何实现,但也许整个系统就会崩溃?谁知道呢。在C#中,整数会在溢出后自动循环。
basicPublish
函数的片段if (nextPublishSeqNo > 0) { unconfirmedSet.add(getNextPublishSeqNo()); nextPublishSeqNo++; }
,使用负长整型,因此它永远不会将其添加到unconfirmedSet中,并永远不会添加1以获取下一个,因此我认为您将获得相同的ID并且与此相关的问题。 - PhoneixS