DEADQ如何在MQ中为SVRCONN通道工作?

时间:2013-06-28 02:24:48

标签: ibm-mq mq

我对MQ中的DEADQ有疑问。我知道当msg无法传递到目标队列时已经使用了DEADQ,例如队列已满或者像这样被禁止。但是如果客户端应用程序通过 SVRCONN 通道连接到QMGR并且目标队列现在已满,那么客户端应用程序发送的消息是否会转到DEADQ,或者只是那个put操作会返回失败并说队列已满?

如果它作为后者工作,是否意味着DEADQ不用于客户端 - 服务器模式,如通过SVRCONN通道?

由于

1 个答案:

答案 0 :(得分:4)

QQgr-to-QMgr频道使用DLQ,因为此时该消息已被委托给WMQ,以便在必要时传送和/或保持。没有选项可以直接通知API调用中的发送应用程序出错。 QMgr可以做的最好的事情是发回报告消息,如果应用已经请求它,以及应用是否指定了回复队列。

当应用程序通过客户端通道连接时,QMgr可以在PUT API调用期间告诉应用程序“嘿,目标队列已满”,并让应用程序决定适当的操作过程。通常,“正确的操作”不包括将消息放入DLQ。实际上,将此类消息路由到辅助队列非常不寻常。传统观点认为应用程序提升警报比提供溢出队列更好。

这是一个例外,当使用JMS类时。这些会将有害消息(退出计数超过队列中的BOTHRESH值)移动到退出队列。如果未指定回退队列或应用程序未获得授权或已满,则应用程序将尝试使用DLQ。同样,允许应用程序直接将消息发送到DLQ是非常不寻常的,并不被认为是良好的做法,但它可以做到。