簡體   English   中英

Spring Integration,JMS入站通道適配器和事務

[英]Spring Integration, JMS Inbound channel adaptor and transactions

我正在使用配置有jms:message-driven-channel-adapter的SI。 我的用例是從隊列中接收一條消息,通過JDBC將其保存到數據庫,從隊列中提交該消息,然后讓該消息根據其類型繼續流經各個通道。 如果消息隨后出現錯誤,則可以,因為我將原始文件存儲在數據庫中,因此可以重播該消息。

我的問題是嘗試在數據庫持久化后立即從隊列中提交事務。 這實際上是中間流程,我只能讓Spring事務管理在最后嘗試並提交。 這不適合,因為在數據庫持久化之后仍然拋出錯誤,它仍然將消息保留在JMS隊列上,因為這是外部事務的起源。

因此,是否有一種簡單的方法可以從JMS隊列中提取消息,將其保存到數據庫,然后將其提交出隊列並為剩余的流啟動新的事務?

謝謝!

豐富

您可以保存到數據庫,然后將消息放在可輪詢的通道中:

<channel id="aChannel">
    <queue capacity="10"/>
</channel>

這將使任何后續流程進入新事務,因為新流程將由不同的線程處理-基於與該可輪詢通道關聯的輪詢器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM