#azure-servicebus-queues
#azure-служебный автобус-очереди
Вопрос:
Я использую Azure.Messaging.ServiceBus
PeekMessageAsync()
сообщения в очереди, чтобы найти ранее не заполненные сообщения, которые нужно удалить, но вызов CompleteMessageAsync()
не имеет никакого эффекта. («Завершение» сообщения в очереди-это то, как я предполагаю, что удаляю элементы? )
Как часть моей отладки я решил обновить его до последней служебной шины библиотеки, но библиотека была нужна ‘LockToken звонить в комплекте на сообщение, но что LockToken был постоянно пуст, пока я использовал ‘получать’ вместо ‘заглянуть’, но новая библиотека принимает весь ServiceBusReceivedMessage
объект, но LockToken тоже пустой на этот объект в любом случае.
Как я могу программно удалить старые сообщения, которые по какой-либо причине ранее не были обработаны должным образом?
Ответ №1:
Вам нужно будет передать полученное/просмотренное ServiceBusReceivedMessage
в CompleteMessageAsync
метод, так как API требует всего сообщения, а не только токена блокировки.
Комментарии:
1. да, в новейшей библиотеке вы передаете все сообщение, но я начал со старой библиотеки, где я мог видеть код, специально передающий пустой идентификатор GUID из LockToken, но более новая библиотека принимает все сообщение, и я могу проверить его во время выполнения и заметить, что ключ блокировки все еще пуст, очевидно, каждое сообщение в этом экземпляре было сгенерировано с использованием соответствующей версии библиотеки, и я подумал, что важно, что оба раза идентификатор GUID LockToken пуст.