gpt4 book ai didi

azure - 在指定期限(例如六个月)后从 DLQ 中删除消息

转载 作者:行者123 更新时间:2023-12-03 06:32:47 24 4
gpt4 key购买 nike

Azure 服务总线实体(队列/主题)支持生存时间 (TTL)。当 TTL 过去时,消息就会过期。到期时,系统会删除该消息或将其移至死信队列 (DLQ)。 服务总线是否有其他设置可以在指定时间段后从 DLQ 中删除消息?例如,为了避免超过大小配额,我们可能希望在六个月后从 DLQ 中删除消息。

另请参阅:

Do messages in dead letter queues in Azure Service Bus expire?

https://learn.microsoft.com/en-us/azure/service-bus-messaging/message-expiration?WT.mc_id=Portal-Microsoft_Azure_ServiceBus

最佳答案

Azure 服务总线的死信队列没有过期选项。这可能是故意的,因为系统不应该只是丢失这些消息,而应该对它们采取一些措施。

有时,监视所有死信队列的总大小等并不方便。一种选择是创建集中式 DLQ。这将允许以下操作:

  1. 监控单个“死信”队列。
  2. 从单个实体接收消息进行处理。
  3. 通过指定队列的 TTL 来控制大小。

例如,假设您有两个队列:test-dlqtest-dlq2。您可以将它们配置为自动将死信消息转发到第三个队列,test-dlq-all。这样,当您有 test-dlqtest-dlq2 接收到死信消息时,

state 1

这些消息最终将进入集中式“DLQ”队列 (test-dlq-all)。

state 2

最好的一点是,每当您自动转发消息时,您总是会知道它们最初的死信位置。

例如,假设您有两条消息,每条消息都来自不同的队列,最终到达集中式“DLQ”test-dlq-all

state 3

检查其消息将显示一个系统属性,DeadLetterSource,上面印有最初死信所在队列的名称。

state 4

此解决方案允许您在 test-dlq-all 队列上设置 TTL 并自动调整消息。

此外,值得一提的是,可以使用集中式“DLQ”设置死信,或者由于处理失败超过 MaxDeliveryCount 而收到死信消息。因此,值得监视 test-dlq-all 的 DLQ。

关于azure - 在指定期限(例如六个月)后从 DLQ 中删除消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75150947/

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