【发布时间】:2011-08-29 05:55:41
【问题描述】:
我正在使用配置了 jms:message-driven-channel-adapter 的 SI。我的用例是接收来自队列的消息,通过 JDBC 将其保存到数据库,提交来自队列的消息,然后让此消息根据其类型继续流经各种渠道。如果消息随后出错,这没关系,因为我已将原始消息存储在数据库中,因此可以重播。
我的问题是在数据库持续存在后立即尝试从队列中提交事务。这实际上是中间流程,我只能让 Spring 事务管理尝试在最后正确提交。这是不合适的,因为如果在数据库持久化之后抛出错误,它仍然会将消息留在 JMS 队列中,因为这是外部事务的起源。
那么,有没有一种简单的方法可以从 JMS 队列中提取消息,保存到数据库,然后将其提交出队列并为剩余的流启动一个新事务?
谢谢!
丰富
【问题讨论】:
标签: java spring jms integration transactionscope