如何确保消息已被Azure服务总线中的所有订阅处理过

时间:2018-07-12 08:04:37

标签: azure azure-storage-blobs servicebus

由于azure服务总线在消息大小(256 kb)中存在限制,因此我在blob中存储了一条长消息,而当功能应用程序收到消息时,我正在从blob存储中下载内容并将其转换为消息格式。

一旦服务总线成功处理了消息,由于不再需要该文件,因此我需要从blob存储中删除该文件。

但是这里的问题是,相同的消息已发送到同一主题下的两个订阅,一个消息由功能应用处理,另一个消息由Web作业处理。如果我从功能应用程序中的blob中删除了文件,则webjob将无法使用它,反之亦然。

那么,有什么方法可以确定所有订阅者都已成功处理该消息?

1 个答案:

答案 0 :(得分:0)

Azure Servicebus消息传递为我们提供了一种在服务总线消息中添加custom or user properties的方法。

1.You can add a custom property like messageReceptionCount to your message with initial value as 0 and send it to your topic.
2.While receiving the message in your topic subscription, you can increment the messageReceptionCount by 1.
3.When the messageReceptionCount has reached the number of subscriptions in the topic you can delete it from your blob storage.

我希望这对您有用。