删除Azure Service Bus中的死主题

Joh*_*son 4 azure azureservicebus

我已经尝试过在这个问题上做作业,但是没有我能做的搜索让我更接近答案.最受欢迎的是在Azure Service Bus上检测并删除孤立队列,主题或订阅.

我的情景:

我有多个服务正在运行(标准win服务).在启动时,这些进程开始订阅Azure Service Bus中的给定主题.我们将主题称为"消息".

当服务关闭时,它会以一种很好的方式取消订阅.

但有时会发生一些事情并且服务崩溃,导致取消订阅失败,然后订阅就会挂起.

我的问题:

1)从我所看到的情况来看,每个死主题订阅都会在邮件发送到该主题时计算.即使没有人会去接它.事实还是虚构?

2)无论如何都要删除一段时间未检查过的订阅,例如过去24小时?最好是Power Shell脚本吗?

我直接向微软提出这个问题,但尚未收到任何答复.当然,我不能成为第一个体验这一点的人.如果我收到任何第三方信息,我也会更新此信息.

谢谢

约翰

Abh*_*Lal 9

在Azure SDK 2.0版本中,我们使用该AutoDeleteOnIdle功能解决了此问题.这将允许您在队列/主题/订阅上设置时间跨度,并且在指定的持续时间内未检测到任何活动时,将自动删除该实体.请在此处查看详细信息,并在此处设置要设置的属性.


Sam*_*tte 5

在您的1)问题上,发送给主题的是消息将被发送到任何匹配的订阅,即使这是空闲(基于您自己的逻辑).订阅是您创建的永久工件,即使没有服务将消息出列,也可以接收消息.

要清除订阅,您可以使用SubscriptionDescription的AccessedAt属性,并使用它来检查有人上次读取队列的时间(通过接收操作). http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.subscriptiondescription.accessedat.aspx

如果您使用该逻辑,您可以构建自己的"清理"机制

HTH