2017-09-06 54 views
2

我想使用ScheduledEnqueueTimeUtc來安排消息供將來處理,但Peek只會返回活動消息和延遲消息。Peeking Azure ServiceBus消息不會返回預定消息

這是我用它來查看消息的代碼:

public static async Task<IEnumerable<BrokeredMessage>> GetMessagesAsync(string connectionString, string queueName, int take) 
    { 
     var queue = QueueClient.CreateFromConnectionString(connectionString, queueName); 
     return await queue.PeekBatchAsync(take).ConfigureAwait(false); 
    } 

與ScheduledEnqueueTimeUtc計劃的消息設置爲在將來某個時候都沒有回來。

在預定的時間後,我得到State = Scheduled的消息,但這不是我所期望的。

從名稱「ScheduledEnqueueTimeUtc」中可以看出消息由於尚未排入隊列而不可見。但是,如果我可以在無法看到它們的情況下將無限數量的預定消息懸掛在那裏,那麼它會困擾我。

我犯了一個錯誤還是有另一種方法來獲得未來的預定消息?

回答

1

我發現問題:我正在發送預定的消息到一個主題 - 而不是一個隊列。

顯然,這意味着消息在預定時間之前在訂閱隊列中不可見。

使用普通隊列,Peek按預期工作,並返回Active,Deferred和Scheduled消息,如人們所期望的那樣:-)