场景
执行业务交易时,我们应该将这些数据提供给最终客户。
当前设计
我们将发布交易消息的Web应用程序添加到Azure服务总线上的主题。
我们向客户端公开API,客户端可以通过这些API消费这些交易中的数据。
调用这些API后,我们会从订阅中读取消息并将其返回给客户端。
问题
我们希望有保证的交付-我们希望确保客户确认数据的交付。因此,我们不想立即从订阅中删除该消息。我们希望保留它,直到客户确认为止。
所以我们只想做一个“窥视”而不是“接收”。
因此,客户端调用第一个API来获取数据,然后在此处进行窥视。
一旦客户端收到数据包,客户端将调用第二个API进行确认。 此时,我们要从“订阅”中删除该消息,使其完整。
Service Bus Message Receiver的当前设计是,根据文档,只能使用执行Peek的同一Receiver实例执行Complete,并且在试用时也观察到相同。
>这两个API都是两个单独的API,我们无法使用同一接收者实例来进行“窥视”和“完成”操作。
正在考虑通过某种方式使该App Service中的API成为Receiver作为Singleton的选项。 但是,当App Service向外扩展时,这将是一个问题。
有没有其他方法可以实现我们在这里要做的事情?