我有一個生產者發送批處理持久消息到一個利用JMS事務的隊列。遏制將批量持久消息發送到隊列的ActiveMQ生產者的正確方法是什麼?
我已經測試,發現生產者流量控制使用間歇大小時的1.我可以看到我的製作被節流按照內存限制我已配置給隊列被應用。這裏是我的製片人流量控制配置:
<policyEntry queue="foo" optimizedDispatch="true"
producerFlowControl="true" memoryLimit="1mb">
</policyEntry>
在隊列中等待消息的數量在控制,我看到作爲生產者流量控制行動的證據。
但是,當批量大小增加到2時,我發現這個內存限制沒有被遵守,並且生產者根本沒有THROTTLEDED。證據是隊列中待處理消息的數量不斷增加,直到達到存儲用例配置的限制。
我理解這可能是因爲消息在異步方式發送時,批量大小超過1儘管我還沒有明確設定useAsyncSend到真正。
ActiveMQ的Producer Flow Control documentation提到油門異步的出版商,我們需要配置生產者窗口大小中不得強制生產者等待確認一旦達到限制窗口製片人。
但是,當我在生產者中配置生產者窗口大小並試圖批量發送消息時,拋出異常並且沒有發送消息。
這讓我覺得和問這個問題,「是否有可能配置生產者窗口大小而在批次發送持久性消息?」。
如果不是,那麼什麼是正確的方式來遏制批次發送持久性消息的生產者?
我可以知道投票問題的原因嗎? –
我在[Active MQ Mailing List]中詢問了這個問題(http://activemq.2283324.n4.nabble.com/What-is-the-correct-way-to-throttle-ActiveMQ-producers-who-send-persistent -messages-in-batches-to-a-td4701204.html),但尚未收到任何結論性答案。 –