ASF 中的原因码和反馈代码
使用原因码和反馈代码来确定错误的原因。 此处提供了 ConnectionConsumer 生成的常见原因码。
要确定错误的原因,请使用以下信息:
- 任何报告消息中的反馈代码
- 死信队列中任何消息的 MQDLH 中的原因码
ConnectionConsumer 生成以下原因码。
- MQRC_BACKOUT_THRESHOLD_REACHED (0x93A; 2362)
- 原因
- 消息已达到在 QLOCAL 上定义的回退阈值,但未定义回退队列。
在无法定义回退队列的平台上,消息已达到 JMS定义的回退阈值 20。
- 操作
- 如果不需要此项,请定义相关 QLOCAL 的回退队列。 同时还需了解多次回退的原因。
- MQRC_MSG_NOT_MATCHED (0x93B; 2363)
- 原因
- 在点到点消息传递中,具有一条消息与监视队列的 ConnectionConsumer 的任一选择器都不匹配。 为保持性能,需将消息重新排队到死信队列。
- 操作
- 要避免出现此情况,请确保使用队列的 ConnectionConsumer 提供一组用于处理所有消息的选择器,或者设置 QueueConnectionFactory 以保留消息。
或者,调查消息的原因。
- MQRC_JMS_FORMAT_ERROR (0x93C; 2364)
- 原因
- JMS 无法解释队列上的消息。
- 操作
- 调查消息的起因。 JMS 通常以 BytesMessage 或 TextMessage形式传递意外格式的消息。 有时,消息格式严重错误时,这会失败。
这些字段中显示的其他代码是尝试将消息重新排队到回退队列失败所导致的。 在此情况下,代码描述了重新排队失败的原因。 要诊断这些错误的原因,请参阅 API> API 完成代码和原因码。
如果无法将报告消息放置到 ReplyToQ 上,那么会将其放置到死信队列上。 在此情况下,会按本主题中所述填写 MQMD 的反馈字段。 MQDLH 中的原因字段说明了无法将报告消息放置到 ReplyToQ 上的原因。