Как удалить старые сообщения служебной шины из очереди

#azure-servicebus-queues

#azure-служебный автобус-очереди

Вопрос:

Я использую Azure.Messaging.ServiceBus PeekMessageAsync() сообщения в очереди, чтобы найти ранее не заполненные сообщения, которые нужно удалить, но вызов CompleteMessageAsync() не имеет никакого эффекта. («Завершение» сообщения в очереди-это то, как я предполагаю, что удаляю элементы? )

Как часть моей отладки я решил обновить его до последней служебной шины библиотеки, но библиотека была нужна ‘LockToken звонить в комплекте на сообщение, но что LockToken был постоянно пуст, пока я использовал ‘получать’ вместо ‘заглянуть’, но новая библиотека принимает весь ServiceBusReceivedMessage объект, но LockToken тоже пустой на этот объект в любом случае.

Как я могу программно удалить старые сообщения, которые по какой-либо причине ранее не были обработаны должным образом?

Ответ №1:

Вам нужно будет передать полученное/просмотренное ServiceBusReceivedMessage в CompleteMessageAsync метод, так как API требует всего сообщения, а не только токена блокировки.

Комментарии:

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