如何控制ActiveMQ异步处理的消息数量?

时间:2012-08-24 14:09:12

标签: jms activemq apache-camel

我是ActiveMQ的新手。我正在使用它(和Apache Camel)进行批处理,最终与Web服务进行通信。

我的问题是ActiveMQ如何控制它的异步性?换句话说,如果它可以同时处理20条消息,但瓶颈是另一端的Web服务,我该如何控制?我可以减慢ActiveMQ吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果您正在使用apache camel 2.4+,您可以使用带有驼峰的限制器来控制到端点的消息流 - 您可以动态更改限制,因为它来自驼峰2.8 - 希望它有所帮助。

答案 1 :(得分:2)

骆驼节流器将是一个很好的解决方案。但它确实将消息保存在Camel应用程序的内存中。然而,它允许精确反应。

另一种选择是您可以在Camel ActiveMQ JMS使用者上配置的限制飞行中路由策略。该策略可以配置上/下水印设置。然后该策略将相应地自动暂停/恢复AMQ消费者。您可以扩展此逻辑并改用自定义指标。

您可以在此处阅读此政策:http://camel.apache.org/routepolicy

这种方法不会在内存中保留任何消息,因为它将控制AMQ消费者端暂停/恢复它以“限制”流量。

答案 2 :(得分:0)

You could also set a pre-fetch limit, preventing AMQ from dispatching messages on a specific transport to its consumers based on the amount of message_delivered responses it gets back from the client. Here is a reference