【发布时间】:2012-03-11 08:57:18
【问题描述】:
我正在使用 ActiveMQ 和 Mule(一种基于 Spring 的 ESB)。 我们有一个快速的生产者和一个缓慢的消费者。 它是只有一个消费者的同步配置。
这里是spring风格consumer的配置:http://pastebin.com/vweVd1pi
最大的要求是保持消息的顺序。 然而,在运行这段代码几个小时后,突然,ActiveMQ 跳过了 200 条消息,并发送了下一条消息。这 200 条消息仍然存在于 activeMQ 中,它们并没有丢失。 但是我们的客户端(Mule)确实有一些自定义代码来检查消息的顺序,使用唯一标识符。
几个月前我就遇到了这个问题。我们通过使用参数“jms.prefetchPolicy.queuePrefetch=1”来改变消费者。当问题再次出现在其他消费者身上时,它似乎运行良好,并且是我们现在需要的解决方案。
是错误还是配置问题?
【问题讨论】:
-
当你说消息被跳过,并留在 ActiveMQ 中是什么意思?他们是在您将他们发送到的队列中还是在其他地方?