Es ist sehr schwierig, eine gute Dokumentation über das Abrufen aller Nachrichten in einer Deadletter-Warteschlange zu finden und einen Blick darauf zu werfen. Ich habe eine Azure Service-Bus-Warteschlange. Alles, was ich finden kann, ist für Service-Bus-Themen ... Kann mir jemand mit einer Kurzanleitung helfen?So sehen Sie die Deadletter-Nachrichten
0
A
Antwort
3
Die Warteschlange für unzustellbare Nachrichten ist eine sekundäre Unterwarteschlange, in die die Giftnachrichten verschoben werden. Im Falle einer azure Service Bus Queue ist der Standardpfad für DLQ queuePath/$ DeadLetterQueue. Sie müssen also einen anderen Queueclient haben, um diese DLQ zu lesen.
Und Sie werden so etwas in. NET-Clients tun.
string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
QueueClient Client = QueueClient.CreateFromConnectionString(connectionString, "QueueName");
// do whatever regular queue reading activities
// this is for dead letter queue
QueueClient deadLetterClient = QueueClient.CreateFromConnectionString(connectionString, QueueClient.FormatDeadLetterPath(Client.Path), ReceiveMode.ReceiveAndDelete);
BrokeredMessage receivedDeadLetterMessage;
while ((receivedDeadLetterMessage = deadLetterClient.Receive(TimeSpan.FromSeconds(10))) != null)
{
Console.WriteLine(receivedDeadLetterMessage);
}
0
string connectionString = ConfigurationManager.AppSettings["connectionString"];
string queueName = ConfigurationManager.AppSettings["queueName"];
ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(connectionString);
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(builder.ToString());
var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
string deadLetterQueuePath = QueueClient.FormatDeadLetterPath(queueName);
QueueClient deadletterQueueClient = factory.CreateQueueClient(deadLetterQueuePath);
while (true)
{
BrokeredMessage brokeredMessage = deadletterQueueClient.Receive();
// Your Logic
}
0
Hier ist ein Beispiel dafür, wie Sie eine Liste aller Nachrichten in der Warteschlange für unzustellbare mit Peek zu bekommen:
public async Task<IEnumerable<BrokeredMessage>> GetDeadLetterMessagesAsync(string connectionString,
string queueName)
{
var queue = QueueClient.CreateFromConnectionString(connectionString, QueueClient.FormatDeadLetterPath(queueName));
var messageList = new List<BrokeredMessage>();
BrokeredMessage message;
do
{
message = await queue.PeekAsync();
if (message != null)
{
messageList.Add(message);
}
} while (message != null);
return messageList;
}
Aber ich habe wirklich keine Ahnung, was der topicPath ist? Da dies eine Warteschlange und kein Thema ist? –
Entschuldigung. Ich habe den Code mit dem Warteschlangenclient aktualisiert. Aus irgendeinem Grund dachte ich, du hättest nach Themen und Subs gefragt. – Aravind
Hmm das mir die folgende Fehlermeldung, wenn es um die while-Schleife kommt: Eine nicht behandelte Ausnahme des Typs ‚System.UnauthorizedAccessException‘ aufgetreten in Microsoft.ServiceBus.dll Zusätzliche Informationen: 40103: Ungültige Autorisierungs-Token Unterschrift, Dank obwohl ! –