Azure服务总线主题,订阅丢失

时间:2018-08-03 09:16:15

标签: c# azure .net-core azureservicebus azure-servicebus-topics

我正在使用Azure ServiceBus(标准层)。

我试图弄清楚几周后发生了什么(似乎是当公交流量增加时开始的,也许每秒10-15条消息)。

我可以使用

自动创建订阅
subscriptionOpts.AutoDeleteOnIdle = TimeSpan.FromHours(3);

从过去几周(当流量增加时)开始,有时我们的订阅客户端会停止接收消息,并在3小时后将其删除。

var messageOptions = new MessageHandlerOptions(args =>
    {
         Emaillog.Warn(args.Exception, $"Client ExceptionReceived: {args.Exception}");
         return Task.CompletedTask;
    }) { AutoComplete = true };
_subscriptionClient.RegisterMessageHandler(async (message, token) => await OnMessageReceived(message, $"{_subscriptionClient.SubscriptionName}", token), messageOptions);

订阅客户端是否有可能断开连接并且不再连接? 我有4-5个与该主题相关的客户端进程,每个进程都有自己的订阅。 当我发现其中一个订阅已删除时,有时将它们全部删除,有时只将其中一些删除。

是错误吗?我对subscriptionClient进行的唯一方法调用是RegisterMessageHandler。我什么都不做手动...

提前谢谢

1 个答案:

答案 0 :(得分:0)

如果在指定时间内在订阅中没有使用消息进行处理,则属性AutoDeleteOnIdle用于删除订阅。

正如您提到的那样,消息流增加到每秒15条消息,因此,订阅没有任何机会留空(没有消息流)。因此,没有理由删除订阅。订阅的空闲状态由传入和传出消息共同决定。

由于消息流量大,有可能处理消息的下游应用程序可能会脱机,从而使消息未处理,最终,当消息流减少时,没有接收者可以处理消息,从而使订阅空闲3小时并删除。