繁体   English   中英

Spring Integration,JMS入站通道网关和事务

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

我正在使用配置了jms:message-driven-channel-gateway的SI。 我的用例是从队列中接收一条消息,通过JDBC将其保存到数据库,从队列中提交该消息,然后让该消息根据其类型继续流经各个通道。 如果消息随后出现错误,则可以,因为我将原始文件存储在数据库中,因此可以重播该消息。

我的问题是尝试在数据库持久化后立即从队列中提交事务。 这实际上是中间流程,我只能让Spring事务管理在最后尝试并提交。 这不适合,因为在数据库持久化之后抛出错误,它仍然将消息保留在JMS队列上,因为这是外部事务的起源。

因此,是否有一种简单的方法可以将消息从JMS队列中提取出来,保存到数据库,然后再从队列中提交呢?

谢谢!

您需要在提交数据库后立即取消-在数据库更新后使用ExecutorChannel或QueueChannel; 然后,下游流将在另一个线程上运行,并且事务将在移交后提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM