【发布时间】:2014-07-31 00:22:38
【问题描述】:
问题:
我有一个生产者和消费者客户端,用于从队列读取和写入(使用 Rabbit MQ 的 java AMQP 库)。
生产者的生产速度高于消费者。 现在,在停止生产者时,消费者仍然继续消费队列中的数据。
但在 Rabbit MQ 控制台上,队列显示为空。
客户端库是否缓存队列中的内容?为什么会发生这种行为?
【问题讨论】:
问题:
我有一个生产者和消费者客户端,用于从队列读取和写入(使用 Rabbit MQ 的 java AMQP 库)。
生产者的生产速度高于消费者。 现在,在停止生产者时,消费者仍然继续消费队列中的数据。
但在 Rabbit MQ 控制台上,队列显示为空。
客户端库是否缓存队列中的内容?为什么会发生这种行为?
【问题讨论】:
客户端库是否缓存队列中的内容?
是的,客户端可以缓存消息
为什么会发生这种行为?
为了提高性能。
顺便说一句,你可以看到客户端prefetch参数
编辑*
默认情况下,消息被大量预取。消息由消费者在 块,但实际上在消费者发送时被消费并从队列中删除 确认。
您应该检查未确认的消息:
【讨论】: