Mit einem Azure Service Bus arbeiten Problem, bei dem zurzeit ein Problem auftritt, bei dem meine Nachrichten mit der ReceiveBatch-Methode empfangen werden. Das Problem ist, dass die erwarteten Ergebnisse nicht wirklich die Ergebnisse sind, die ich bekomme. Hier ist die grundlegende Code-Setup, sind Anwendungsfälle unter:Ungerades Verhalten von Azure Service Bus ReceiveBatch()
SubscriptionClient client = SubscriptionClient.CreateFromConnectionString(connectionString, convoTopic, subName);
IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100);
foreach (BrokeredMessage message in messageList)
{
try
{
Console.WriteLine(message.GetBody<string>() + message.MessageId);
message.Complete();
}
catch (Exception ex)
{
message.Abandon();
}
}
client.Close();
MessageBox.Show("Done");
den obigen Code verwenden, wenn ich 4-Nachrichten senden, dann auf dem ersten Lauf Umfrage durch ich die erste Meldung. Beim zweiten Durchlauf bekomme ich die anderen 3. Ich erwarte, alle 4 gleichzeitig zu bekommen. Es scheint immer einen singulären Wert bei der ersten Umfrage zurückzugeben, dann den Rest bei nachfolgenden Umfragen. (Das gleiche Ergebnis mit 3 und 5, wo ich n-1 von n Nachrichten beim zweiten Versuch und 1 Nachricht beim ersten Versuch erhalten).
Wenn ich 0 Nachrichten empfangen habe, dauert die Operation zwischen ~ 30-60 Sekunden, um die messageList zu erhalten (die eine 0 zählt). Ich brauche das sofort zurückzukehren.
Wenn ich den Code
IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100, new Timespan(0,0,0));
dann ausgeben ändern 2 # weggeht, weil issue 1 noch andauert, wo ich den Code zweimal anrufen müssen, um alle Nachrichten zu bekommen.
Ich gehe davon aus, dass die Ausgabe # 2 ist wegen eines Standard-Timeout-Wert, die ich in # überschreiben 3 (obwohl ich es finden verwirrend, dass, wenn eine Nachricht da ist es reagiert sofort, ohne den Standardwartezeit). Ich bin mir nicht sicher, warum ich nie die volle Anzahl an Nachrichten in einem einzigen ReceiveBatch bekomme.
Gibt es zufällig "Thema" in Frage ist "Partitioniert"? Ich habe genau dasselbe Verhalten bei einer "Partitioned Queue" gesehen. –
Danke, das war ein Teil des Problems. –