Ibm mq WebSphere MQ.NET客户端-回退队列不工作

Ibm mq WebSphere MQ.NET客户端-回退队列不工作,ibm-mq,Ibm Mq,我不熟悉MQ,因此如果我没有正确解释自己,请原谅我。我们在一个队列上收到一条消息,该消息在读取时出现2110 MQRC_格式_错误,失败。问题似乎是它没有指定“格式”,例如,我们期望的是“MQSTR”。客户机代码(C#)正在捕获MQException并执行MQQueueManager.Backout(),但是消息只是返回到队列中,并被客户机再次读取和拒绝 查看队列,我发现它没有设置回退队列或回退阈值。队列管理器也没有死信队列集。因此,我所做的是设置DLQ,并将队列的回退队列设置为回退阈值为5。但

我不熟悉MQ,因此如果我没有正确解释自己,请原谅我。我们在一个队列上收到一条消息,该消息在读取时出现2110 MQRC_格式_错误,失败。问题似乎是它没有指定“格式”,例如,我们期望的是“MQSTR”。客户机代码(C#)正在捕获MQException并执行MQQueueManager.Backout(),但是消息只是返回到队列中,并被客户机再次读取和拒绝

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

我想让回退和DLQ工作,但如果有其他方法只是手动删除或移动此消息,这将有助于现在。这只是一条测试消息,所以如果我们丢失了它也没关系


编辑:我必须清除队列才能运行,因此不幸的是,在再次发生之前,可能无法测试任何解决方案。

MQ本机客户端不会自动将错误消息移动到
BackoutQ
DLQ
。应用程序必须编写额外的代码才能将消息移动到
DLQ
Backout队列
。然而,XMS.NET和JMS客户机完成了这项工作。NET是一个用C语言实现的JMS规范。NET与MQ客户机包捆绑在一起

来到您的案例:

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


请参阅文档。

MQ本机客户端不会自动将错误消息移动到
BackoutQ
DLQ
。应用程序必须编写额外的代码才能将消息移动到
DLQ
Backout队列
。然而,XMS.NET和JMS客户机完成了这项工作。NET是一个用C语言实现的JMS规范。NET与MQ客户机包捆绑在一起

来到您的案例:

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


请参阅文档。

非常感谢。那很有帮助。非常感谢。这很有帮助。