【问题标题】:MQ: What happens if a message rollback FAILED?MQ:如果消息回滚失败会怎样?
【发布时间】:2022-05-06 19:32:43
【问题描述】:

我使用 IBM.XMS (9.1.0.0) 从我的 .NET 应用程序的队列中获取消息。 在会话下,我从队列中获取消息然后插入数据库(SQL 服务器),如果一个步骤失败,会话将回滚。该消息将返回到队列中,以便我下次可以得到它。这工作正常,直到有一天,一条消息丢失并且 MQ 日志说:

IBM.XMS.XMSException:CWSMQ0067E:回滚失败。退出() 对底层队列管理器对象的操作失败。

链接异常:CompCode:2,原因:2018

我不确定这个错误是否是原因,所以我的问题是:如果出现“回滚失败”异常会发生什么,消息是否会返回到队列中?

【问题讨论】:

    标签: transactions ibm-mq xms


    【解决方案1】:

    一般来说:如果您还没有提交消息,但也没有成功回滚,那么当您的会话无效时,消息将在稍后的某个时间点自动回滚。 关于您的具体情况: MQRC 2018 指示连接句柄无效。如果无法建立与队列管理器的连接,则可能会发生这种情况,因此连接的句柄无效,但您还希望使用此无效句柄继续操作。这样的操作包括调用回滚。 你说,如果一个步骤失败,你调用回滚。获取与 MQ 的会话是否是导致回滚的这些步骤的一部分?这可以解释 2018 年。不要尝试回滚尚未成功建立的会话。它没用,因为没有什么可回滚的,它是 2018 年提供的。

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2011-04-27
      • 2021-11-06
      相关资源
      最近更新 更多