gpt4 book ai didi

java - MQ消息回滚

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

我正在尝试从 Java 中的 MQ 队列读取消息,当处理异常时需要回滚时,我对流程有点困惑。

我有一个在循环中运行并查找消息的阅读器类。当我初始化阅读器时,它会创建一个连接和一个 session 。然后,当需要在循环中读取消息时,它会创建一个 MQQueueMQQueueReceiver。这工作正常,我从队列中得到一个 JMSMessage,然后将其交给另一个线程进行工作。如果工作线程失败,我想将该消息放回到队列中(以便集群中的其他节点重试它)。

我的问题是,如何回滚?我注意到 MQQueueSession 类中有一个 rollback() 方法。但我对所有消息重复使用同一个 session 。我是否理解应该为每条消息创建一个新 session ,而不是一遍又一遍地重复使用同一个 session ?

这对我来说是违反直觉的。

session 也是通过connection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);创建的。我是否应该使用 CLIENT_ACKNOWLEDGE 之外的其他标志?

最佳答案

您应该使用Session.SESSION_TRANSACTED标志和Session.commit/Sessiuon.rollback来提交/回滚当前事务中完成的所有消息

关于java - MQ消息回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16085066/

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