我有一個函數,檢查它是否經常檢查我的服務總線中是否仍有消息。服務總線messagecount檢查返回true,即使它是0
是可以獲得ammount的功能是:
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;
}
而且檢驗結果是:
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;
}
這完全在剛開始的時候有爲零的消息,但啓動後收到的郵件,然後傳遞最後一個消息,它仍然通過MessageCountBiggerThenZero檢查。
有誰知道這可能是怎麼回事? serviceBus在最後一條消息之後是否返回其他值?
編輯:
更深入地瞭解檢查(所以它仍然通過if語句,即使沒有消息了):
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;
}
}
你在哪裏調用'MessageCountBiggerThenZero'方法,你可以提供有關接收消息並調用MessageCountBiggerThenZero檢查代碼? –
@ Bruce-MSFT我將代碼添加到問題中。我在其他地方也使用它,但他們有相同的結果。 – Tvt