[英]Camel consume single message and stop, transacted
我正在嘗試使用Camel以事務方式使用來自JMS隊列的單個消息。 特別是在這樣的流程中:
最初,我嘗試通過使用ConsumerTemplate的輪詢使用者來執行此操作,但是我不知道是否可以通過事務方式執行此操作-事務似乎是ConsumerTemplate的內部事務,因此無論我做什么消息都是ConsumerTemplate返回時已確認為已消耗。
我可以使用ConsumerTemplate做到這一點嗎? 我可以使用Camel做到這一點嗎?如果可以,最好的方法是什么(簡單的示例將不勝感激)?
我最終使用pollEnrich dsl實現了這一目標。 例如,我的路線構建器如下所示:
from("direct:service-endpont").transacted("PROPOGATION_REQUIRED").setExchangePattern(ExchangePattern.InOut).pollEnrich("activemq:test-queue").bean(myHandler);
我將直接端點用作服務,向直接端點發送“請求”消息會輪詢jms隊列以查找單個消息(如果需要,則進行阻塞)。 啟動的事務擴展到pollEnrich,因此,例如,如果myHandler bean失敗,則pollEnrich期間獲取的消息將不被使用並留在隊列中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.