#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 секундам.