我们在Windows服务器上运行最新版本的RabbitMQ 2.1.1,并使用.Net客户端。我们正在运行如下测试:将500000条消息发布到transcient非持久性扇出交换,客户端使用autodelete队列。只有一个队列。 Publisher每秒发送~10K消息。发送完所有消息后,它将断开连接。 rabbitmqctl工具显示队列大小为0,但接收器仍然收到消息几秒钟,它只收到60%的消息。你知道为什么会有这样的延迟以及如何最小化它吗?
干杯!
答案 0 :(得分:1)
如果你使用带有no_ack = True(禁用确认)的basic.consume,服务器将只发送它拥有的所有消息。
当服务器将所有消息发送给您的消费者时(这就是队列为空的原因),行为就会发生,但它们仍然可以在某个地方或消费者的网络上缓冲。