如何在azureservicebus中查看和删除deadletter中的消息

时间:2016-02-04 02:15:43

标签: azure azureservicebus azure-servicebus-queues azure-servicebus-topics brokeredmessage

我创建了一个天蓝色的服务总线主题应用程序,用于查看 deadletter 中的所有消息。需要从deadletter队列中删除我查看的一些特定消息(具有特定的messageid)。请提供帮助以实现此目的。

3 个答案:

答案 0 :(得分:2)

通过调用对死信队列中收到的代理消息的引用完成,您可以将其从死信队列中删除。

https://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.brokeredmessage.complete.aspx

答案 1 :(得分:2)

首先,如果您需要知道如何创建服务总线主题和订阅:

要接收来自订阅的消息,您需要创建一个消息接收者:

//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());

答案 2 :(得分:0)

此代码可帮助您删除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();