我正在使用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。我什么都不做手动...
提前谢谢
答案 0 :(得分:0)
如果在指定时间内在订阅中没有使用消息进行处理,则属性AutoDeleteOnIdle用于删除订阅。
正如您提到的那样,消息流增加到每秒15条消息,因此,订阅没有任何机会留空(没有消息流)。因此,没有理由删除订阅。订阅的空闲状态由传入和传出消息共同决定。
由于消息流量大,有可能处理消息的下游应用程序可能会脱机,从而使消息未处理,最终,当消息流减少时,没有接收者可以处理消息,从而使订阅空闲3小时并删除。