【问题标题】:durable subscriber pattern with azure service bus具有 azure 服务总线的持久订户模式
【发布时间】:2014-05-29 16:06:08
【问题描述】:

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

我无法解决的是如何将它与 Azure 服务总线一起应用,我似乎无法在文档中找到任何示例或讨论。这是 Azure 服务总线提供的东西,还是我应该开始寻找 Azure 服务总线的替代品?

【问题讨论】:

标签: azure azureservicebus


【解决方案1】:

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

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

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

  1. 创建主题。
  2. 创建关于该主题的订阅(无过滤器)
  3. 向主题发送一些消息。
  4. 在不同的脚本或控制台应用程序中,为该订阅创建一个 MessageReceiver 并下拉消息。

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

【讨论】:

  • 啊好的..谢谢。我现在对文档有了更好的理解。本质上,您同时创建了一个主题(即总线名称)和一个订阅。然后客户端连接到已经创建的订阅。我的困惑是,主题巴士名称对我来说并不明显......谢谢。
  • 不,服务总线只是一个或多个主题和队列的容器。您当然可以在创建主题后随时创建订阅,但除非至少有一个订阅,否则发送到该主题的所有消息都将丢失(因为没有人在收听它们)。检查 Abhishek 在下面指出的文档。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多