gpt4 book ai didi

java - Spring Integration 和 Transaction Management——需要多难?

转载 作者:行者123 更新时间:2023-11-30 11:15:36 27 4
gpt4 key购买 nike

我正在尝试使用 Spring Integration 构建一个简单的消息生成组件。基本上是这样的:

<jdbc:inbound-channel-adapter 
channel="from.database"
data-source="dataSource"
query="SELECT * FROM my_table"
update="DELETE FROM my_table WHERE id IN (:id)"
row-mapper="someRowMapper">
<int:poller fixed-rate="5000">
<int:transactional/>
</int:poller>
</jdbc:inbound-channel-adapter>

<int:splitter
id="messageProducer"
input-channel="from.database"
output-channel="to.mq" />

<jms:outbound-channel-adapter
channel="to.mq"
destination="myMqQueue"
connection-factory="jmsConnectionFactory"
extract-payload="true" />

<beans:bean id="myMqQueue" class="com.ibm.mq.jms.MQQueue">
<!-- properties omitted --!>
</beans:bean>

“messageProducer”可能会在每次轮询时生成多条消息,但不一定每行一条。

我担心的是,我想确保不会从 my_table 中删除行,除非生成的消息已提交到 MQ channel 。

另一方面,我接受在发生数据库或网络故障时不会删除行,从而导致产生重复消息的情况。换句话说,我将满足于可能重复的非 XA 单阶段提交。

当试图弄清楚我需要在我的 Spring 配置中添加什么时,我很快就迷失在无休止的关于事务管理器、AOP 和事务建议链的讨论中,我发现这些我很难理解——尽管我知道我应该这样做。

但我担心我会花很多时间准备一个对我手头的问题来说并不是真正必要的配置。

所以 - 我的问题是:可以这么简单 - 还是我需要为事务同步提供显式配置?

最佳答案

But can I do something similar with a jdbc/jms mix?

我会说"is"。

请阅读 Dave Syer 关于 Best effort 1PC 的文章,ChainedTransactionManager 的来源。

关于java - Spring Integration 和 Transaction Management——需要多难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310632/

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