У меня есть функция лазури, которая срабатывает каждые 1 минуту.Функция создает MessageReceiver следующим образом:
var messageReceiver = new MessageReceiver(serviceBusConnectionString, entityPath, ReceiveMode.PeekLock, null, 0);
Подписка имеет продолжительность блокировки 1 минуту.Затем он пытается извлечь до 100 сообщений из подписки следующим образом:
var allMessages = new List<Message>();
Message message;
do {
message = await messageReceiver.ReceiveAsync(TimeSpan.FromSeconds(2));
if (message != null) allMessages.Add(message);
} while (message != null && allMessages.Count() < 100);
После обработки сообщения завершаются с использованием messageReceiver.CompleteAsync
, а приемник сообщений закрывается с использованием messageReceiver.CloseAsync()
.
При первом запуске функции она получает до 100 сообщений из подписки, но при следующих запусках она получает только 0 или 1 сообщение независимо от количества сообщений, доступных в подписке (Service Bus Explorer показывает, что> 10 сообщений вподписка).Таким образом, кажется, что ReceiveAsync возвращает ноль, даже когда есть доступные сообщения.
Увеличение времени ожидания для ReceiveAsync, похоже, не помогает.
Почему ReceiveAsync возвращает ноль, когда есть доступные сообщения?