WMQ如何在远程和本地队列管理器之间交换DLQ信息?

Joh*_*ann 5 ibm-mq

当本地队列管理器在其AMQ错误日志中收到以下消息时:

09/13/12 08:00:19 - 进程(3017.20)用户(mqm)程序(amqrmppa_nd)AMQ9544:未放入目标队列的消息.

说明:在处理通道'TO_QM_QD2T1_C1'期间,无法将一条或多条消息放入目标队列,并尝试将它们放入死信队列.队列的位置是2,其中1是本地死信队列,2是远程死信队列.

...... MQ交换这些信息的机制是什么?通道程序API本身是否有内置工具,或者信息交换是否作为离散消息放置在SYSTEM.CLUSTER.COMMAND.QUEUE(在集群的情况下)?鉴于这可能发生在远程队列定义的情况下,只有简单的发送器/接收器通道对,并且没有相应的COMMAND QUEUE,我可以想象它将通过通道进程通信来处理......只是想知道......

T.R*_*Rob 1

即使消息仅沿一个方向流动,通道代理之间也具有双向通信。当消息无法在远程端找到目的地时,接下来会发生多种可能性。仅当消息可以成功放置在某处并且第一个尝试的地方是远程 DLQ 时,通道才会继续运行。如果失败,本地 MCA 必须重新定位消息或停止通道。因此,两个消息通道代理在它们之间计算出发生了什么以及通道的状态应该是什么。

错误消息的特殊措辞反映了消息的不同处理源自相同的代码路径和异常处理以及WMQ的优化。MCA 知道该消息此时已被放入 DLQ,并且不会使用两个不同的错误消息或逻辑来计算出使用 DLQ 的措辞,而是将一个数字放入模板中。因此,单一错误消息和简化的逻辑可用于两种可能性。