Praca z tematem usługi Azure Service Bus, który obecnie jest uruchomiony i pojawia się problem z odebraniem moich wiadomości za pomocą metody ReceiveBatch. Problem polega na tym, że oczekiwane wyniki nie są tak naprawdę rezultatami, które otrzymuję. Oto podstawowa konfiguracja kod, przypadki użycia są poniżej:Dziwne zachowanie usługi 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");
Stosując powyższy kod, jeśli wyślę 4 wiadomości, a następnie sondować na pierwszym biegu przez uzyskać pierwszą wiadomość. Przy drugim przejściu dostaję drugie 3. Spodziewam się, że wszystkie 4 będą w tym samym czasie. Wydaje się, że zawsze zwraca pojedynczą wartość w pierwszej ankiecie, a resztę w kolejnych ankietach. (ten sam wynik z 3 i 5, gdzie otrzymuję n-1 z n wiadomości wysłanych przy drugiej próbie i 1 wiadomości przy pierwszej próbie).
Jeśli mam 0 wiadomości do odebrania, operacja zajmuje od ~ 30-60 sekund, aby uzyskać listę komunikatów (mającą liczbę 0). Potrzebuję tego, aby natychmiast powrócić.
Jeśli zmienię kod na
IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100, new Timespan(0,0,0));
, wydaję # 2, ponieważ problem 1 nadal występuje, gdy muszę wywołać kod dwukrotnie, aby uzyskać wszystkie wiadomości.
Zakładam, że problem # 2 z powodu domyślnej wartości limitu czasu, który mogę nadpisać w # 3 (chociaż uważam, że to dziwne, że jeśli wiadomość jest tam natychmiast reaguje bez czekania domyślny czas). Nie jestem pewien, dlaczego nigdy nie otrzymuję pełnej ilości wiadomości w jednym Odbiorniku.
Czy istnieje szansa, że "Tematem" jest "Partycjonowanie"? Widziałem dokładnie takie samo zachowanie z 'Partitioned Queue'. –
Dzięki, to była część problemu. –