【问题标题】:WebSphere MQ .NET client - Backout queue not workingWebSphere MQ .NET 客户端 - 回退队列不起作用
【发布时间】:2013-11-06 16:06:29
【问题描述】:

我对 MQ 不熟悉,所以如果我没有正确解释自己,请原谅我。我们在队列上收到一条消息,该消息在读取时失败,并带有 2110 MQRC_FORMAT_ERROR。似乎问题在于它没有指定“格式”,例如我们期待“MQSTR”。客户端代码 (C#) 正在捕获 MQException 并执行 MQQueueManager.Backout() 但是消息只是回到队列中并被客户端再次读取和拒绝。

查看队列,我发现它没有设置回退队列或回退阈值。队列管理器也没有设置死信队列。所以我所做的是设置 DLQ 并将队列的回退队列设置为它,回退阈值为 5。但是消息仍然卡在队列上,被不断读取和放回。消息的回退计数目前接近 2000 万。

我想让回退和 DLQ 正常工作,但如果有另一种方法可以手动删除或移动此消息,现在会有帮助。这只是一条测试消息,所以丢失也没关系。

编辑:我必须清理队列才能让事情顺利进行,所以不幸的是,在它再次发生之前可能无法测试任何解决方案。

【问题讨论】:

    标签: ibm-mq


    【解决方案1】:

    MQ 本机客户端不会自动将错误消息移动到BackoutQDLQ。应用程序必须编写额外的代码来将消息移动到DLQBackout queue。但是 XMS .NET 和 JMS 客户端可以完成这项工作。 XMS .NET 是 C# 语言的 JMS 规范实现。 XMS .NET 与 MQ 客户端包捆绑在一起。

    来看看你的案子:

    MQRC_FORMAT_ERROR 实际上不是错误,它是一个警告,告诉应用程序 MQ 客户端无法转换传入的消息,并且它向应用程序传递了未转换的消息。应用程序必须处理此异常并且不应回滚此类消息。您需要调查发送此类消息的应用程序并解决任何问题。

    请参阅文档here

    【讨论】:

    • 非常感谢。这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2012-11-04
    • 2017-04-30
    • 2016-10-31
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多