gpt4 book ai didi

error-handling - 什么属于 DLQ/无效消息队列?

转载 作者:行者123 更新时间:2023-12-03 07:38:41 25 4
gpt4 key购买 nike

关于允许应用程序拒绝什么样的消息,是否有一个好的最佳实践?

我的理解是所有无法处理的消息都应该被拒绝到死信队列 - 无论问题是消息中的语法错误还是语义错误,或者应用程序是否暂时无法处理消息(例如,因为数据库刚刚下降)。

当然 - 如果应用程序已经预先知道它将无法处理消息(数据库关闭),它应该停止接受消息。

那么什么是共同的理解/最佳实践?

最佳答案

我的回答是关于 WebSphere MQ:

死信队列(简称 DLQ)是一个放置无法传递到目的地的消息的地方。消息可以由队列管理器、消息 channel 代理 (MCA) 和应用程序放置在 DLQ 上。 DLQ 上的所有消息都必须以死信 header 结构 MQDLH 为前缀。当队列管理器或 MCA 放置消息时,MQDLH header 会自动修复,而应用程序必须明确地为 MQDLH 加上前缀。

就应用程序而言,如果它们无法处理消息,例如无法理解消息格式,它们可以将消息放入 BACKOUT 队列而不是 DLQ。 BACKOUT 队列就像任何普通队列一样,可以放置被应用程序拒绝的消息。 BACKOUT 队列的优点是您可以在每个队列的基础上指定一个 BACKOUT 队列,并且放置在那里的消息不需要带有 MQDLH header 前缀。

可以编写一个应用程序来读取来自 BACKOUT 的消息并将它们按原样路由回目标队列。但是,DLQ 中的消息需要额外的处理才能在将它们放入目标队列之前移除 MQDLH。

关于error-handling - 什么属于 DLQ/无效消息队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16936320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com