2017-09-06 3 views
2

Ich versuche, ScheduledEnqueueTimeUtc zu verwenden, um Nachrichten für die zukünftige Verarbeitung zu planen, aber Peek gibt nur aktive und verzögerte Nachrichten zurück.Spähen von Azure ServiceBus-Nachrichten gibt keine geplanten Nachrichten zurück

Dies ist der Code, den ich Nachrichten verwenden, um Peek:

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

Geplante Nachrichten mit ScheduledEnqueueTimeUtc irgendwann werden nicht zurückgegeben in die Zukunft.

Nach der geplanten Zeit, bekomme ich die Nachricht mit State = Geplant, aber das ist nicht das, was ich erwartet habe.

Aus dem Namen "ScheduledEnqueueTimeUtc" macht es Sinn, dass die Nachricht nicht sichtbar ist, da es noch nicht in die Warteschlange eingereiht ist. Es stört mich jedoch, wenn ich eine unendliche Anzahl von geplanten Nachrichten dort hängen lassen kann, ohne sie sehen zu können.

Habe ich einen Fehler gemacht oder gibt es einen anderen Weg, um geplante Nachrichten zu erhalten?

Antwort

1

Ich habe das Problem gefunden: Ich habe die geplante Nachricht an ein Thema gesendet - keine Warteschlange.

Offensichtlich bedeutet dies, dass die Nachricht in der Abonnementwarteschlange vor dem geplanten Zeitpunkt nicht sichtbar ist.

Mit regulären Warteschlangen funktioniert Peek wie erwartet und gibt sowohl aktive als auch verzögerte und geplante Nachrichten zurück, wie zu erwarten ist :-)