Azure服务总线队列: Can I manage/cancel scheduled messages?

标签 azure azureservicebus azure-servicebus-queues

如果我将来使用这样的方式安排消息:

d = datetime.utcnow() + timedelta(minutes=5)
task = {"some": "object"}

sbs.send_queue_message(
    qn,
    Message(
        task, 
        broker_properties={'ScheduledEnqueueTimeUtc': d}
    )
)

那么有没有办法可以查看/删除已经预定的消息呢? send_queue_message不返回任何内容,并且 receive_queue_message可以理解的是,它不会返回计划稍后排队的项目 - 所以我无法将其传递给 delete_queue_message例如。

Azure 团队似乎意识到了这个用例,因为存储队列似乎具有类似以下功能:https://azure.microsoft.com/en-gb/blog/azure-storage-queues-new-feature-pop-receipt-on-add-message/

基本上,我需要能够安排一条消息稍后排队,但可以取消。理想情况下,我还希望能够查看所有 future 的计划任务,但能够仅存储可用于稍后删除排队消息的 ID 就足够了。

Azure UI 也显示事件/计划消息的计数,这似乎表明应该有某种方法来查看这些计划消息!

队列存储对此会更好吗?或者服务总线有一些可能有效的方法吗? ScheduledEnqueueTimeUtc似乎比队列存储中的可见性超时更灵活,因此如果可以的话,坚持使用它会很好。

最佳答案

是的,这是可能的。

不知道 NodeJS 客户端是否支持它,但对于 C# 客户端,有一种替代我描述的 ScheduledEnqueueTimeUtc 方法 here 。使用QueueClient.ScheduleMessageAsync(),您可以发送计划消息并获取SequenceNumber。然后可以使用 QueueClient.CancelScheduledMessageAsync(sequenceNumber) 在任何时间点取消消息。

关于Azure服务总线队列: Can I manage/cancel scheduled messages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333654/

相关文章:

python - 将输出文件从 Azure Batch 移动到 Data Lake

azure - 如何获取 Azure 存储帐户日志记录启用状态?

azure - 为什么我在 Azure 应用程序网关中看到 403 禁止?

Azure 服务总线接收和删除

azure - 从本地 Windows 10 盒子连接到 azure 服务总线失败

azure - 如何使用 Nuclio 从 Azure 服务总线读取事件?

azure - SFTP 连接定制/参数化

azure - .NET服务总线队列与Azure队列服务之间进行选择

azure - 强制使用服务总线队列的 Azure Functions 一次仅处理一条消息

azure - 逻辑应用 - 从启用 session 的服务总线队列检索一批消息