【问题标题】:Auto-expire orphaned Subscription (Azure ServiceBus Messaging SubscriptionClient)自动过期孤立订阅 (Azure ServiceBus Messaging SubscriptionClient)
【发布时间】:2012-11-02 19:31:16
【问题描述】:

我想到的场景是这样的:服务总线用于实例间通信,因此每个服务实例的订阅都是唯一的。最终结果是,如果一个实例没有正常关闭,它的订阅不会被删除。

当服务实例“死亡”并重新启动时,以前的订阅内容无关紧要,可以丢弃。

那么,有没有办法为服务总线订阅设置“生存时间”或模拟类似的东西,而不必求助于一些自定义的孤儿检测机制?

【问题讨论】:

    标签: azure publish-subscribe servicebus orphaned-objects


    【解决方案1】:

    从 Azure SDK 2.0 开始,这可以按预期工作。

    另外,与其他报告相反,在我的测试中,只要有一个未决的接收者正在监听该订阅,订阅就不会被删除。

    var description = new SubscriptionDescription(topicPath, subscriptionId);
    description.AutoDeleteOnIdle = TimeSpan.FromSeconds(600);
    namespaceManager.CreateSubscription(description);
    

    【讨论】:

      【解决方案2】:

      该确切功能已在下一个版本之一的积压中。也就是说,在 azure 中,您可以使用角色环境中的实例 ID 来创建订阅的名称,从而让重新启动的实例重用订阅。实例 ID 名称是稳定的。

      编辑:功能是 AutoDeleteOnIdle https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.subscriptiondescription

      【讨论】:

      • 感谢您的回答,克莱门斯。使用 Instance ID 创建订阅名称正是我们正在做的事情,但是所有调试会话仍然留下了相当多的垃圾,其中开发结构实例名称是使用 PID 编号生成的。
      • @Clemens 知道什么时候可以发布吗?
      • 我也在寻找何时发布。对于每个客户的 Silverlight 客户订阅,我有一个类似的用例。如果您通过查找过时的订阅知道主题名称,则可能有一个选项来进行自己的清理。 :stackoverflow.com/questions/15871119/…
      【解决方案3】:

      我遇到了完全相同的问题,2013 年初发布的预览解决方案:http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.subscriptiondescription.autodeleteonidle.aspx

      它非常易于使用(参见下面的示例)。不幸的是,如果在 AutoDeleteOnIdle 期间没有发布消息,订阅似乎会超时,即使您有一些等待消息的进程(根据 Azure Servicebus AutoDeleteOnIdle)。

      NamespaceManager manager=NamespaceManager.CreateFromConnectionString(serviceBusConnectionString);
      if(!manager.SubscriptionExists(topic,subscriptionName))
      {
          manager.CreateSubscription(new SubscriptionDescription(topic,subscriptionName) {
              AutoDeleteOnIdle=TimeSpan.FromDays(2)
          });
      }
      

      【讨论】:

        猜你喜欢
        • 2022-06-10
        • 1970-01-01
        • 2022-01-08
        • 2018-01-02
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        相关资源
        最近更新 更多