Пакетная или отмена обработки очереди обслуживания Azure - PullRequest
0 голосов
/ 01 октября 2018

Как отменить обработку или обработку указанного числа сообщений очереди для очереди служебной шины Azure с использованием DotNet SDK без увеличения числа доставок?Увеличение числа доставок приводит к тому, что в пустое сообщение поступает сообщение

Следуя этим указаниям , используя QueueClient вместо SubscriptionClient. Мне удалось написать два консольных приложения, отправителя и получателя служебной шины.Очереди.Если я хочу обрабатывать вещи в очереди в пакетном режиме (например, каждую минуту, когда я хочу обработать 100 элементов очереди или каждый минутный запрос 100 элементов очереди), как бы я изящно отменил обработку, которая происходит после вызова RegisterMessageHandler (event, cancellationToken)?


//throws System.OperationCanceledException exception so the DeliveryCount goes up
await queueClient.CloseAsync(); 
//throws Microsoft.Azure.ServiceBus.MessageNotFoundException exception so DeliveryCount also goes up 
await queueClient.CancelScheduledMessageAsync(message.SystemProperties.SequenceNumber); 

Я пытался следовать рекомендациям предварительной выборки , но, похоже, это всего лишь "буфер" для количества запросов, а не для общего пакета.

1 Ответ

0 голосов
/ 02 октября 2018

CancelScheduledMessageAsync() - это неправильный API для использования, поскольку он не отменяет обработку.

Когда сообщения извлекаются клиентом, счетчик доставки всегда будет увеличиваться.Не имеет значения, было ли сообщение успешно обработано или обработка была отменена.Единственная операция, которая не увеличивает количество доставок, - это сбор, но тогда вы не можете заблокировать сообщение для обработки.

Я бы порекомендовал посмотреть, как настроить MaxDeliveryCount для обработки, которая может быть отменена.

...