首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要用死信队列?

为什么要用死信队列?
EN

Stack Overflow用户
提问于 2022-02-18 21:26:10
回答 1查看 665关注 0票数 2

我正在考虑可能为一组服务所使用的队列实现一个死信队列,用于相互通信。

一直困扰在我脑后的是它如何解决未处理信息的问题。

在我看来,一条消息将不会在以下两种情况之一中被处理:

  1. 由于消息本身固有的原因(比如它的格式不正确),无法处理消息本身。
  2. 接收消息的应用程序没有处理它的能力。

在场景1中,将消息保存在死信队列中不起任何作用。应用程序仍然无法处理它。

在场景2中,应用程序还需要处理死信队列中的消息。但是,如果它没有能力处理其主队列中的消息,为什么它有能力从第二个队列中获取工作呢?

一定有什么东西我错过了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-18 22:07:07

死信队列的目标不是将其视为同一订阅服务器读取的辅助队列。相反,它是一个发送意外无法处理的消息的地方。出现这种情况有两个主要原因:

  1. 发布消息中有一个错误(您的场景#1)
  2. 订阅者的行为已经改变,现在它无法处理以前能够处理的消息。

理想情况下,当一个人设置一个死信队列时,他们也是基于发布到这个队列的消息的设置警报。然后,在某个单独的过程中,他们通过订阅死信主题上的订阅来查看消息,以确定它们为什么不能被处理。如果消息不正确,则订阅服务器的所有者可以联系发行者的所有者,以便在需要时修复这些消息。

如果消息是正确的,并且订阅服务器中的错误阻止它们被处理,那么就可以修复订阅服务器。修复后,可以将消息重新发布到原始主题,以便由固定订阅者获取它们,或者可以使用寻觅重放消息。

消息被传递到死信队列,原因是缺乏处理它们的能力(因此正在占用它们或让ack截止日期过期)类似于#2,这意味着需要增加订阅者的容量,并可能将流量控制设置到与订阅者可以处理的水平一致的水平。然后,人们会重新发布或使用“寻求”来再次获取消息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71180022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档