持久的用户模式与天蓝色的服务总线

Gra*_*amB 0 azure azureservicebus

我希望将Azure Service Bus与主题一起使用,但需要处理订阅者可能没有收听其感兴趣的消息的情况(例如,服务器正在重新启动等).这是此处描述的典型持久订户模式http://www.eaipatterns.com/DurableSubscription.html.

我无法解决的是如何将此应用于Azure Service Bus,我似乎无法在文档中找到任何示例或讨论.这是Azure服务总线提供的内容还是应该开始寻找Azure Service Bus的替代方案?

Mik*_*eWo 5

这是直接内置到服务总线.只要创建订阅,它就是持久的.您创建一个主题,然后创建一个或多个订阅.然后,一个或多个消费者在活动时收听订阅.如果它们变为非活动状态,例如服务器正在重新启动,则订阅会存储消息,直到消费者重新启动并请求一个消息.

如果您在每个消费者变为活动状态或变为非活动状态时动态创建和销毁订阅,则服务总线只能是非持久性的.如果没有订阅,则发送到主题的消息将丢失.创建订阅后,无论是否有任何活跃的消费者使用该订阅,发送到该主题的任何消息(如果他们通过任何已应用的过滤器)都将在订阅上可用.在您删除订阅之前存在订阅,或者如果您打开了空闲删除功能,它们将超过空闲删除时间.

您可以使用简单的控制台应用程序验证这一点,或使用LinqPad设置执行以下操作的代码:

  1. 创建一个主题.
  2. 在该主题上创建订阅(无过滤器)
  3. 发送一些消息到主题.
  4. 在其他脚本或控制台应用程序中,为该订阅创建MessageReceiver并下拉消息.

订阅中的消息在该订阅的生命周期内是持久的,直到它们被处理(完成等),它们被转发到其他地方或它们到期.