1

我是 ActiveMQ 的新手。我将它(和 Apache Camel)用于最终与 Web 服务通信的批处理。

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

谢谢!

4

3 回答 3

2

如果您使用的是 apache camel 2.4+,您可以使用带有 camel 的节流器来控制到端点的消息流 - 您可以从 camel 2.8 开始动态更改限制 - 希望它有所帮助。

于 2012-08-24T15:33:40.113 回答
2

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

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

您可以在此处阅读有关此政策的信息:http: //camel.apache.org/routepolicy

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

于 2012-08-26T07:28:39.633 回答
0

您还可以设置预取限制,防止 AMQ 根据从客户端返回的 message_delivered 响应的数量将特定传输上的消息分派给其消费者。这是一个参考

于 2016-04-04T18:09:02.833 回答