背景:
我可以从订阅的死信队列中读取消息。我将它们收集在 List
中并设置 receiver.complete(message.getLockToken())
,这会从 DLQ 中删除消息。
稍后,我迭代从 DLQ 收集的消息列表并将它们发送回主题。在将它们放入 List
时,我确保在放入之前创建了一个新的 Message(或 BrokeredMessage)对象。
这对我自己的个人帐户来说一切都很好。我看到数字在上升。我还可以用另一种方法很好地阅读它们。
问题:
当我连接到我公司的主题时,我不知道消息最终去向哪里?他们不去任何订阅。我没有看到任何数字上升( Activity 计数、死信计数等)。
问题:
这是否是因为没有规则能够处理这些消息,因此它们被自动清除?有这种可能吗?
最佳答案
该解决方案很简单,并且已经在 stackoverflow 上传播。
当我创建新消息对象new Message(oldMessage)
时,它会复制旧消息中的所有属性,包括DeadLetterReason
和DeadLetterErrorDescription
。您可以通过调用此消息 msg.getProperties()
来获取属性。
这就是消息进入以太的原因。我阻止了它的复制,这解决了问题。
附带说明一下,我已经找到了关于此 link 的实际问题的答案。根据@PramodValavala-MSFT的建议
这是我最初的问题:这是否是因为没有规则能够处理这些消息,所以它们被自动清除?有这种可能吗?
关于java - 将消息从死信移回主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55945678/