Как посмотреть и удалить сообщение из тупика в azureservicebus
Я создал приложение-тему Azure Service Bus, которое просматривает все сообщения в deadletter. Некоторые определенные сообщения (с определенным идентификатором сообщения), которые я посмотрел, должны быть удалены из очереди deadletter. Пожалуйста, предоставьте помощь для реализации этого.
3 ответа
Позвонив по ссылке со ссылкой на полученное сообщение, полученное из очереди недоставленных сообщений, вы можете удалить его из очереди недоставленных сообщений.
Во-первых, если вам нужно знать, как создать тему служебной шины и подписку:
Чтобы получить сообщение из подписки, необходимо создать получатель сообщения:
//Create the messaging factory
var messagingFactory = MessagingFactory.CreateFromConnectionString("ServiceBusConnectionString");
// Get the dead letter path
var deadLetterPath = SubscriptionClient.FormatDeadLetterPath("TopicPath", "subscriptionName");
// Get the message receiver for the deal letter queue.
var messageReceiver = messagingFactory.CreateMessageReceiver(deadLetterPath);
Тогда вы можете просто прослушать приходящие сообщения:
// This is the list of ids that need to be delete
var messageIdsToDelete = new List<long>(...);
messageReceiver.OnMessage((message) =>
{
// Check if we have to delete the message
if (messageIdsToDelete.Contains(message.SequenceNumber))
{
// Complete and delete the message from the queue.
message.Complete();
}
}, new OnMessageOptions());
Этот код помогает вам удалить сообщение о недоставке в служебной шине Azure.
MessageReceiver fromQueueClient = null;
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
fromQueueClient = await factory.CreateMessageReceiverAsync(_entityName, ReceiveMode.PeekLock);
BrokeredMessage _message = await fromQueueClient.ReceiveAsync(SequenceNumber);
await _message.CompleteAsync();