【发布时间】:2018-12-02 00:49:00
【问题描述】:
据此doc服务总线支持Receive-and-Delete和Peek-Lock两种模式。
如果使用 Peek-Lock 模式,如果消费者在处理消息后立即崩溃/挂起/执行很长时间的 GC,但在 messageId 为“已完成”且可见性时间到期之前,同一消息有可能被传递两次。
那么微软怎么说Service Bus最多支持一次交付模式。是不是因为接收和删除模式只发送一次消息。但话又说回来,如果消费者在处理消息时发生了一些事情,那么有价值的信息就会丢失。
如果是,那么使用 Azure 服务总线作为队列和 Azure 函数作为消费者来确保准确的一次交付的最佳方法是什么。
附:我能想到的一种方法是将 MessageID 存储在 blob 中,但在我的情况下,MessageID 的数量可能非常大,存储和加载所有这些不是正确的方法。
【问题讨论】:
标签: azure message-queue azureservicebus azure-servicebus-queues