Удаление сообщения служебной шины Azure - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь удалить сообщение с помощью токена блокировки методом CompleteAsync, но это не всегда работает.Можно ли удалить сообщение из темы Azure Service Bus по идентификатору сообщения?

1 Ответ

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

Я думаю, что вы используете библиотеку Microsoft.Azure.ServiceBus для выполнения операций обмена сообщениями.Используя эту библиотеку, Вы не можете удалить сообщение по идентификатору сообщения.Для удаления сообщения необходимо проходить LockToken каждый раз, когда вы выполняете операцию Complete, и нет возможности получить сообщение, используя идентификатор.

Если вы хотите это сделать, то сначала вы должны получать сообщения, затем повторять каждое из них, пока не получите сообщение, которое ищете.

Я бы предложил библиотеку Windows.Azure.ServiceBus,Здесь вы можете удалить сообщение, не передавая никаких токенов.Кроме того, есть возможность получить сообщение, используя порядковый номер сообщения.Но WindowsAzure.ServiceBus не поддерживает приложения .Net Core, но Microsoft.Azure.ServiceBus будет поддерживать.

 MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);

            queueClient = await factory.CreateMessageReceiverAsync(_entityPath, ReceiveMode.PeekLock);

           BrokeredMessage _message = await queueClient.ReceiveAsync(sequenceNumber);
           await _message.CompleteAsync();
...