21

死信队列和退出队列有什么区别?

在 WebSphere MQ 术语和应用程序服务器方面。

所有 J2EE/JEE 应用程序服务器都有一个 MQ 提供程序,它们是否也有一个死信队列的构造,或者是特定于 WebSphere MQ 的东西?

我对退出队列的理解如下:

如果在指定的尝试次数后 MQ 无法将消息传递到目标,它会将消息移动到回退队列。

我对死信队列没有清楚的了解。

感谢任何帮助。

4

4 回答 4

16

死信队列总是在 MQSeries 中使用(我最后一次使用 MQ)来存储到达队列管理器但队列不存在的消息。

例如,如果消息是队列管理器X和队列Y的地址,它将通过管理器X的通道到达。

如果接收通道发现没有队列Y,它将被放入死信队列。

另一方面,回退队列更像是应用程序级别的东西(至少就 MQ 而言)。当 MQ 客户端由于某种原因无法处理消息时,它可以将其退回以供以后处理(返回到它的原始队列)。

如果它被撤销太多次(可以配置阈值),它会被移动到撤销队列。

于 2009-05-18T05:02:23.797 回答
4

感谢您的回答。我还发现,如果应用程序由于某种原因无法将消息移动到 Back Out Queue (BOQ),则会尝试将队列移动到死信队列 (DLQ)。

在我们的应用程序中它发生了。Back Out Queue 存在一些权限问题,因此消息无法写入 BOQ,最终进入死信队列。

于 2009-06-23T03:30:55.953 回答
2

死信队列的行为与回退相同。我将死信队列视为无法在错误或回退队列中恢复的消息的火葬场,并且需要收集一些最后的非业务特定数据。一旦信息被捕获,消息就会被永久删除。回退有助于分析可能需要恢复以完全重新处理或发送回应用程序区域供他们决定的数据的消息。

于 2009-05-18T03:44:05.083 回答
0

死信队列也是本地队列。如果我们试图将消息从一个队列放入另一个队列,但消息没有发送到正确的目的地,此时消息将进入死信队列。

于 2016-06-16T07:54:39.337 回答