【发布时间】:2017-02-22 14:16:29
【问题描述】:
我在 Azure 服务总线死信队列中有大量消息。当我看到消息时,我发现大部分消息都已过期。
我想知道当我们尝试将过期的死信队列消息重新提交回其原始队列时会发生什么?
谁能帮我解释一下?
谢谢!
【问题讨论】:
标签: azure servicebus dead-letter
我在 Azure 服务总线死信队列中有大量消息。当我看到消息时,我发现大部分消息都已过期。
我想知道当我们尝试将过期的死信队列消息重新提交回其原始队列时会发生什么?
谁能帮我解释一下?
谢谢!
【问题讨论】:
标签: azure servicebus dead-letter
我想在下面回答你的两个问题,
当您从死信队列收到过期消息以处理/重新提交到主队列时(使用 ReceiveAsync() 接收消息),消息的状态将更改为延迟状态。因此,该消息将无法再在死信队列中接收。
关于您的问题,当您重新提交时该消息会发生什么,它将作为新消息提交到目标队列中。
【讨论】:
我们可以使用FormatDeadLetterPath() method 为指定的死信队列路径构建格式名称,并创建接收器并从DLQ 中检索消息。如果您想将消息重新提交回主队列,您可以根据 DLQ 中检索到的消息创建并发送新消息。并且您可以通过检查 DeadLetterReason 和 DeadLetterErrorDescription 属性来调查为什么消息被死信。
This link用示例解释死信队列,请参考。
【讨论】:
what happens when we re-submit the expired DLQ message back to the QUEUE. 这取决于您如何处理主队列中的这些消息(您重新提交)。例如,如果没有作业处理来自您的主队列的消息,则这些消息将在其中过期,并且可能会再次传递给 DLQ。