我是ActiveMQ的新手。我正在使用它(和Apache Camel)进行批处理,最终与Web服务进行通信。
我的问题是ActiveMQ如何控制它的异步性?换句话说,如果它可以同时处理20条消息,但瓶颈是另一端的Web服务,我该如何控制?我可以减慢ActiveMQ吗?
谢谢!
答案 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