gpt4 book ai didi

java - Spring Integration、JMS 入站 channel 适配器和事务

转载 作者:行者123 更新时间:2023-12-01 05:45:26 26 4
gpt4 key购买 nike

我正在使用配置有 jms:message-driven-channel-adapter 的 SI。我的用例是从队列接收消息,通过 JDBC 将其保存到数据库,从队列提交消息,然后让该消息根据其类型继续流经各个 channel 。如果消息随后出错,这没关系,因为我将原始消息存储在数据库中,以便可以重播。

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

那么,有没有一种简单的方法可以从 JMS 队列中提取消息,保存到数据库,然后将其从队列中提交,并为剩余的流程启动一个新事务?

谢谢!

丰富

最佳答案

您可以将消息保存到数据库,然后将消息放入可轮询 channel 中:

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

这将使任何后续流都位于新事务中,因为新流将由不同的线程处理 - 基于与此可轮询 channel 关联的轮询器。

关于java - Spring Integration、JMS 入站 channel 适配器和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6065281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com