【问题标题】:Moving messages from dead letter back to topic将消息从死信移回主题
【发布时间】:2019-05-02 04:27:46
【问题描述】:

背景:

我可以从订阅的死信队列中读取消息。我将它们收集在 List 中并设置 receiver.complete(message.getLockToken()),这会从 DLQ 中删除消息。

稍后,我遍历从 DLQ 收集的消息列表并将它们发送回主题。在将它们放入List 时,我确实确保在放入之前创建一个新的 Message(或 BrokeredMessage)对象。

这对我自己的个人帐户来说很好。我看到数字上升了。我也可以用另一种方法很好地阅读它们。

问题:

当我连接到我公司的主题时,我不知道消息在哪里结束?他们不去任何订阅。而且我没有看到任何数字上升(活动计数、死信计数等)。

问题:

这可能是因为没有规则能够处理这些消息,所以它们会被自动清除?有这种可能吗?

【问题讨论】:

  • 您能否提供更多关于您如何设置公司主题的详细信息?
  • @AresOu,您好,感谢您调查我的问题。我想我自己弄明白了一些。不过还是谢谢。
  • 请在答案部分写下您的发现并接受它,因为它将帮助社区中的其他人。
  • @MohitVerma-MSFT - 完成。谢谢
  • 要回答您的问题,就像您没有订阅一样。更多详情请参考this thread

标签: java azureservicebus servicebus azure-servicebus-queues


【解决方案1】:

解决方案很简单,并且已经在 stackoverflow 中传播。

当我创建一个新消息对象new Message(oldMessage) 时,它正在复制旧消息中的所有属性,包括DeadLetterReasonDeadLetterErrorDescription。您可以通过调用此消息msg.getProperties()获取属性。

这就是消息进入以太的原因。我停止了它的复制,这解决了问题。

顺便说一句,我在link 上找到了我的实际问题的答案,正如@PramodValavala-MSFT 所建议的那样

这是我最初的问题:这可能是因为没有规则能够处理这些消息,所以它们被自动清除了吗?有这种可能吗?

【讨论】:

    猜你喜欢
    • 2020-08-22
    • 2018-09-04
    • 2018-08-26
    • 2020-11-27
    • 2021-04-11
    • 2011-06-02
    • 2019-02-02
    • 2015-04-22
    • 2020-10-07
    相关资源
    最近更新 更多