【问题标题】:Azure ServiceBusProcessor takes a long time to stopAzure ServiceBusProcessor 需要很长时间才能停止
【发布时间】:2020-12-13 08:56:17
【问题描述】:

我正在尝试通过 Azure 服务总线库 Azure.Messaging.ServiceBus 发送消息。我正在关注this tutorial 并发送/处理一条消息。

调用 processor.StopProcessingAsync() 时,该操作大约需要一分钟(每次)。在 Azure 门户中查看时,所有消息都已处理。我不知道为什么即使队列上没有消息,处理器也需要这么长时间才能停止。

似乎每次都需要(完全相同)相同的时间。如果有人能指出为什么需要这么长时间以及如何减少它(配置/设置?),我将不胜感激。提前致谢!

【问题讨论】:

  • 嗨迈克尔,感谢您的评论。假设出于缩放目的。当我想再次放大和缩小时。

标签: c# azure-servicebus-queues


【解决方案1】:

好的。在浏览源代码时,我发现接收器启动后有一个默认的“等待时间”,即 60 秒。这可以通过在 ServiceBusClientOptions.ServiceBusRetryOptions 上设置 TryTimeout 来降低。

见: ServiceBusRetryOptions AmqpReceiver.ReceiveMessagesAsyncInternal

【讨论】:

  • 如果可行,请标记此答案以结束此问题。:)
【解决方案2】:

我对此进行了测试,它按预期工作:

var clientOptions = new ServiceBusClientOptions();
clientOptions.RetryOptions.TryTimeout = new TimeSpan(0, 0, 5);
await using var client = new ServiceBusClient(connectionString, clientOptions);

将超时设置为 5 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2012-12-04
    • 2012-12-03
    • 2014-07-21
    相关资源
    最近更新 更多