Как узнать, прочитана ли очередь полностью, используя метод PEEK в Azure Service Bus - PullRequest
0 голосов
/ 25 июня 2019

Я использую REST API Azure Service Bus для получения сообщений. Требуется запланированное задание для чтения сообщений из очередей служебной шины Azure и отправки их для обработки. В случае успешной обработки удалите их из очереди или оставьте в очереди для обработки в следующем запланированном задании. Я использую метод сообщения Peek-Lock (неразрушающего чтения) (https://docs.microsoft.com/en-us/rest/api/servicebus/peek-lock-message-non-destructive-read).

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

1 Ответ

0 голосов
/ 25 июня 2019

Ваше требование несколько проблематично.

При успешной обработке удалите их из очереди или оставьте в очереди для обработки в следующем запланированном задании.

Успешная обработка всегда должна приводить к завершению сообщения.Иначе ты напрашиваешься на неприятности.При обработке сообщений в режиме peek-lock сообщение блокируется на срок до 5 минут.Вы несете ответственность за его завершение, если обработка прошла успешно.Если он не был завершен, это признак того, что обработка не была успешной, и следует прочитать снова, учитывая ваши требования.Не оставляйте успешно обработанные сообщения в очереди.

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

Вас это не должно волновать.Читайте сообщения и обрабатывайте.Если не удалось обработать, сообщение появится снова.В противном случае сообщение должно быть удалено.Если вы хотите обработать идемпотентность, то есть убедиться, что если по какой-то причине сообщение не было обработано более одного раза, при успешной обработке и до его завершения сохраните идентификатор сообщения (при условии, что он уникален) в хранилище данных и проверьте любое новое сообщение по этому.хранилище данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...