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