Azure ServiceBusProcessor требует много времени для остановки

#c# #azure-servicebus-queues

#c# #azure-servicebus-очереди

Вопрос:

Я играю с отправкой сообщений через Azure Service Bus library Azure.Обмен сообщениями.ServiceBus. Я следую этому руководству и отправляю / обрабатываю одно сообщение.

При вызове процессора.StopProcessingAsync(), действие занимает около минуты (каждый раз). При просмотре на портале Azure обрабатываются все отправленные сообщения. Я понятия не имею, почему процессору требуется так много времени для остановки, даже если в очереди нет сообщений.

Кажется, что каждый раз требуется (точно) одинаковое количество времени. Если бы кто-нибудь мог указать мне, почему это занимает так много времени и как его уменьшить (настройка / настройка?), Я был бы более чем благодарен. Заранее спасибо!

Комментарии:

1. Привет, Майкл, спасибо за ваш комментарий. Скажем, для целей масштабирования. Когда я снова захочу масштабироваться вверх и вниз.

Ответ №1:

ОК. Просматривая исходный код, я обнаружил, что существует «время ожидания» по умолчанию после запуска приемника, которое составляет 60 секунд. Это значение можно снизить, установив TryTimeout в ServiceBusClientOptions.ServiceBusRetryOptions.

См.: Варианты использования ServiceBusRetryOptions
Amqполучатель.ReceiveMessagesAsyncInternal

Комментарии:

1. Если это работает, пожалуйста, отметьте этот ответ, чтобы закончить этот вопрос.:)

Ответ №2:

Я протестировал это, оно работает так, как ожидалось:

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

устанавливает время ожидания равным 5 секундам.