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

21

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

在WebSphere MQ术语和应用服务器术语中。

所有J2EE/JEE应用服务器都有MQ提供程序,它们是否也有死信队列的构造,还是说这是WebSphere MQ特有的东西?

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

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

我不清楚死信队列的作用。

感谢任何帮助。


https://community.ibm.com/community/user/imwuc/browse/blogs/blogviewer?BlogKey=28814801-083d-4c80-be5f-90aaaf81cdfb - Marek-A-
4个回答

16

死信队列一直被用于MQSeries(我上次使用MQ时)中,用于存储到达队列管理器但队列不存在的消息。

例如,如果消息寄送给队列管理器X和队列Y,它会通过通道到达管理器X

如果接收方通道发现没有队列Y,则会将其放入死信队列。

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

如果它回退的次数太多(阈值可以配置),它将被移动到回退队列。


以下是更多信息:http://www.ibm.com/developerworks/websphere/library/techarticles/0803_titheridge/0803_titheridge.html - Miguel Ping
@paxdiablo,这个回退队列是由MQ管理器管理的还是客户端需要连接到这个队列? - bluelurker
尽管回退队列由队列管理器管理,但将消息路由到回退队列是由MQ的JMS和XMS客户端完成的。 - Shashi

4

感谢答案。我也发现,如果应用程序由于某种原因无法将消息移动到后退队列(BOQ),则会尝试将队列移动到死信队列(DLQ)。

在我们的应用程序中发生了这种情况。后退队列存在一些权限问题,因此无法将消息写入BOQ,结果它被放入了死信队列。


2

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接