我心目中的情形是这样的:服务总线是用于实例到实例的通信,所以认购每个服务实例是唯一的。 最终的结果是,如果一个实例没有正常关闭,其订阅不被删除。
当一个服务实例“死”并重新启动,认购以前的内容是不相关的,并且可以被丢弃。
那么,有没有一种方法来设置一个“生存时间”为服务总线认购或模拟类似的东西,而不必诉诸于一些自定义的孤儿检测机制?
我心目中的情形是这样的:服务总线是用于实例到实例的通信,所以认购每个服务实例是唯一的。 最终的结果是,如果一个实例没有正常关闭,其订阅不被删除。
当一个服务实例“死”并重新启动,认购以前的内容是不相关的,并且可以被丢弃。
那么,有没有一种方法来设置一个“生存时间”为服务总线认购或模拟类似的东西,而不必诉诸于一些自定义的孤儿检测机制?
,准确的特点是对积压在接下来的版本之一。 这么说,在蔚蓝的,你可以使用实例ID来回回的作用环境下创建订阅的名称,因此有重启的情况下重用订阅。 实例ID名称是稳定的。
编辑:该功能是AutoDeleteOnIdle https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.subscriptiondescription
与Azure的SDK 2.0本工程按预期启动。
此外,相反,其他报告,在我的测试,认购没有得到,只要有一个未决的接收器听取该订阅删除。
var description = new SubscriptionDescription(topicPath, subscriptionId);
description.AutoDeleteOnIdle = TimeSpan.FromSeconds(600);
namespaceManager.CreateSubscription(description);
我有完全相同的问题,解决预览发布了它的2013年开始: http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.subscriptiondescription.autodeleteonidle.aspx
这是非常容易使用(见下面的例子)。 不幸的是,似乎订阅超时如果没有出版了AutoDeleteOnIdle段消息,甚至如果你有一些进程等待的消息(根据天青Servicebus AutoDeleteOnIdle )。
NamespaceManager manager=NamespaceManager.CreateFromConnectionString(serviceBusConnectionString);
if(!manager.SubscriptionExists(topic,subscriptionName))
{
manager.CreateSubscription(new SubscriptionDescription(topic,subscriptionName) {
AutoDeleteOnIdle=TimeSpan.FromDays(2)
});
}