Ich habe eine Funktion, die überprüft, ob es noch eine Nachricht in meinem Servicebus gibt, die es ständig überprüft.Servicebus messagecount check gibt true zurück, obwohl es 0 ist
Die Funktion, die die ammount erhält, ist:
public int GetActiveMessageCount()
{
var connectionString = azureConnectionStringWithoutEntityPath;
long messageCount = 0;
try
{
var nameSpaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
messageCount = nameSpaceManager.GetQueue(azureQueueName).MessageCountDetails.ActiveMessageCount;
}
catch
{
throw;
}
return (int)messageCount;
}
Und die Prüfung ist:
public bool MessageCountBiggerThenZero()
{
int messageCount = 0;
try
{
messageCount = this.GetActiveMessageCount();
}
catch (Exception e)
{
Debug.WriteLine("An error occured while checking if the messageValue is bigger then zero and not null saying : " + e);
}
return messageCount > 0;
}
das funktioniert perfekt am Anfang, wenn es Null-Meldungen sind aber, nachdem sie den Empfang von Nachrichten beginnt und dann Übergibt die letzte messagesage es besteht noch die MessageCountBiggerThenZero Prüfung.
Weiß jemand, wie das sein kann? Gibt der ServiceBus nach der letzten Nachricht andere Werte zurück?
Edit:
Mehr Einblick in die Prüfung (also es geht immer noch die if-Anweisung, auch wenn es keine Meldung mehr ist):
public object RecieveOneMessageFromServiceBus()
{
var client = QueueClient.CreateFromConnectionString(azureConnectionString);
BrokeredMessage brokermessage = null;
client.PrefetchCount = 1; // get 1 message at a time
if (MessageCountBiggerThenZero())
{
try
{
// try to recieve message
}
catch
{
throw;
}
}
else
{
return null;
}
}
Wo sind Sie 'MessageCountBiggerThenZero' Methode aufrufen, könnten Sie bieten den Code über den Empfang von Nachrichten und Aufrufen der MessageCountBiggerThenZero überprüfen? –
@ Bruce-MSFT Ich habe den Code zu der Frage hinzugefügt. Ich benutze es auch an anderen Orten, aber sie haben das gleiche Ergebnis. – Tvt