gpt4 book ai didi

java - 线程和 Jms 事务

转载 作者:行者123 更新时间:2023-11-30 05:10:52 25 4
gpt4 key购买 nike

我遇到了以下情况。请就此提出建议

有一个入站队列有一个主线程正在运行(我们没有使用 JMS Listener )从队列中挑选一条消息并处理该消息并启动另一个子线程再次处理。

现在的问题是我如何在主线程和子线程中处理事务。这意味着当我在主线程中处理消息时说发生了一些数据库访问错误所以我想将消息回滚到入站队列。如果主线程创建的子线程也发生同样的故障,则检索到的消息应回滚到入站队列。

我已经浏览了 JMS Spring 引用,但它们仅将事务划分为 JMS 监听器

那么我如何在我的场景中应用事务概念

请给我建议,如果您有任何示例程序请与我分享。这样会更好地理解您的概念

最佳答案

我认为你现在处于困难的境地。在我看来,让两个线程在同一个事务中工作似乎充满了竞争条件和其他危险 - 事实上我什至不确定这是可能的。我熟悉的 JTA 事务 API 使用从线程到事务的一对一映射。

为什么不能使用一个线程池,每个线程从队列中获取消息并完成所有工作。那么在获取消息之后就不需要生成新线程了。您可以获得同样良好的并行性和更大的简单性。

然后您会发现您已经有效地重新发明了标准 Java 方法。那么为什么不直接使用 MDB 呢?

关于java - 线程和 Jms 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3394529/

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