【问题标题】:How to remove old Service Bus Messages from the queue如何从队列中删除旧的服务总线消息
【发布时间】:2022-01-13 00:42:54
【问题描述】:

我在队列中使用Azure.Messaging.ServiceBus 到PeekMessageAsync() 消息,因此我可以找到需要删除的以前未完成的消息,但调用CompleteMessageAsync() 没有任何效果。 (“完成”队列中的消息是我假设我删除项目的方式?)

作为调试的一部分,我决定升级到最新的服务总线库,但以前的库需要一个“LockToken”才能在消息上调用 Complete,但 LockToken 始终为空,除非我使用“Receive”而不是“ Peek',但新库接受整个 ServiceBusReceivedMessage 对象,但 LockToken 在该对象上也是空的。

如何以编程方式删除以前因任何原因未正确处理的旧消息?

【问题讨论】:

    标签: azure-servicebus-queues


    【解决方案1】:

    您需要将接收/窥视的 ServiceBusReceivedMessage 传递给 CompleteMessageAsync 方法,因为 API 需要整个消息,而不仅仅是锁定令牌。

    【讨论】:

    • 是的,在最新的库中你传递了整个消息,但我从旧库开始,在那里我可以看到代码专门从 LockToken 传递一个空的 GUID,但新的库需要整个消息,我可以在运行时检查它并注意到 LockToken 仍然是空的,显然该实例中的每个 Message 都是使用适当版本的库生成的,我认为 LockToken GUID 两次都是空的很重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2020-01-08
    • 2020-10-08
    • 2017-02-13
    • 2020-07-19
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多