Wie Verwenden der MessageReceiver.Receive-Methode von sequenceNumber auf ServiceBus

Ich versuche, eine Nachricht aus einer Deadletter-Warteschlange erneut zu senden.

Ich kann eine Nachricht in einer Warteschlange für nicht zustellbare Nachrichten wiederholen, das ist in Ordnung. Das Problem ist, wenn ich dies jetzt aus der Deadletter-Warteschlange löschen möchte.

Folgendes versuche ich zu tun:

var subscription = "mySubscription";
var topic = "myTopic";

var connectionString = "connectionStringOnAzure";
var messagingFactory = MessagingFactory.CreateFromConnectionString(connectionString);

var messageReceiver = messagingFactory.CreateMessageReceiver(SubscriptionClient.FormatDeadLetterPath(topic, subscription), ReceiveMode.ReceiveAndDelete);


long messageSequenceNumber = 835;
var brokeredMessage = messageReceiver.Receive(messageSequenceNumber);  // this part fails

// mark message as complete to remove from the queue
brokeredMessage.Complete();

Ich erhalte folgende Fehlermeldung:

 Microsoft.ServiceBus.Messaging.MessageNotFoundException : Failed to lock one or more specified messages. The message does not exist..TrackingId:ae15edcc-06ac-4d2b-9059-009599cf5c4e_G5_B15,TimeStamp:8/13/2013 1:45:42 PM

Anstatt jedoch eine Nachrichtensequenznummer anzugeben und ich verwende nur den ReceiveBatch wie unten gezeigt, ist dies in Ordnung.

// this works and does not throw any errors
var brokeredMessages = messageReceiver.ReceiveBatch(10);

Vermisse ich etwas? Oder gibt es eine andere Möglichkeit, Deadletters wieder aufzubereiten und zu entfernen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage