2017-09-06 1 views
2

今後の処理のためにScheduledEnqueueTimeUtcを使用してメッセージをスケジュールしようとしていますが、PeekはActiveメッセージとDeferredメッセージのみを返します。Azure ServiceBusメッセージでスケジュールされたメッセージが返されない

これは私がメッセージを覗くために使用するコードです:ScheduledEnqueueTimeUtcと

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); 
    } 

スケジュールメッセージは将来のいつかに設定が返されません。

スケジュールされた時間が経過した後、State = Scheduledというメッセージが表示されますが、これは私が期待したものではありません。

「ScheduledEnqueueTimeUtc」という名前から、まだエンキューされていないためにメッセージが表示されないことがあります。しかし、私はスケジュールされたメッセージを見ることができずにそこにぶら下がっている無限の数のメッセージを持つことができれば気になります。

私は間違いをしましたか、または将来のスケジュールされたメッセージを受け取る別の方法はありますか?

答えて

1

問題が見つかりました:スケジュールされたメッセージをトピックではなくキューに送りました。

明らかに、これは、スケジュールされた時刻までにメッセージがサブスクリプションキューに表示されないことを意味します。

通常のキューを使用すると、Peekは期待どおりに動作し、期待通りにアクティブ、遅延メッセージ、およびスケジュールされたメッセージを返します。

関連する問題