2012-08-24 52 views
1

我是ActiveMQ的新手。我正在使用它(和Apache Camel)進行批處理,最終與Web服務進行通信。如何控制ActiveMQ異步處理的消息數量?

我的問題是ActiveMQ如何控制它的真正異步性?換句話說,如果它可以同時處理20條消息,但是另一端的Web服務的瓶頸,我該如何控制呢?我可以減慢ActiveMQ嗎?

謝謝!

回答

2

如果您使用的是apache camel 2.4+,您可以使用camel的throttler來控制消息流向端點 - 您可以動態更改駝峯2.8的限制 - 希望它有所幫助。

+0

謝謝。我正在嘗試一下。看起來這是控制消息處理速度的最好方法,如果您的下游系統無法處理呼叫。 – mstrom

2

駱駝調節器將是一個很好的解決方案。但是,它確實將消息保存在Camel應用程序的內存中。但它允許精確地反應。

另一種替代方法是可以在Camel ActiveMQ JMS使用者上配置的限制飛行中路由策略。該策略可以使用上限/下限水位設置進行配置。然後,策略將相應地自動掛起/恢復AMQ使用者。您可以擴展此邏輯並改爲使用自定義指標。

你可以閱讀關於這個政策在這裏:http://camel.apache.org/routepolicy

這一做法將不會再保留任何信息的記憶,它會控制在AMQ消費方暫停/恢復到「節流」的流動。

0

您還可以設置預取限制,防止AMQ根據從客戶端收到的message_delivered響應的數量將特定傳輸上的消息分派給其使用者。這裏是reference

相關問題