Nachrichten konsumieren
Nachrichten aus einer Queue und ihren Kanälen konsumieren
Für das Konsumieren von Nachrichten sind Berechtigungen für die Queue und Zugriff auf den zugehörigen Nachrichtenendpunkt erforderlich.
Eine Antwort auf eine GetMessages
-Anforderung enthält die Liste der Nachrichten mit Payload, Nachrichten-ID, Ablaufzeit, Sichtbarkeitstimeout, Zustellungsanzahl und Empfang (receipt
). Die maximale Anzahl von Nachrichten, die in einer Antwort zurückgegeben werden können, beträgt 20. Die tatsächliche Anzahl der zurückgegebenen Nachrichten hängt jedoch von der Anzahl der verfügbaren Nachrichten und davon ab, ob die Anforderung Langes Polling verwendet hat.
Consumers sind für das Aktualisieren von Nachrichten und das Löschen von Nachrichten verantwortlich. Hierfür ist der Empfang (receipt
) der Nachricht erforderlich.
Nachrichten sperren
Consumers können eine aus der Queue abgerufene Nachricht "sperren", sodass ein anderer Consumer diese Nachricht nicht abrufen kann. Nachrichten werden durch Angeben eines Sichtbarkeitstimeouts gesperrt. In der Queue-API wird der Parameter visibilityInSeconds
verwendet, um diesen Wert festzulegen.
Der Sichtbarkeitstimeout kann beim Erstellen einer Queue auf Queueebene festgelegt oder beim Konsumieren oder Aktualisieren von Nachrichten angegeben werden. Wenn ein Consumer Schwierigkeiten beim erfolgreichen Verarbeiten einer Nachricht hat, kann er die Nachricht aktualisieren, um ihre Unsichtbarkeit zu verlängern. Wenn der Sichtbarkeits-Timeout einer Nachricht nicht verlängert wird und der Consumer die Nachricht nicht löscht, kehrt er zur Queue zurück.
Beim Konsumieren müssen Sie den Sichtbarkeitstimeout nicht angeben. Der für die Queue konfigurierte Sichtbarkeitstimeout gilt für die Anforderung. Beim Erstellen einer Queue beträgt der Standardsichtbarkeitstimeout 30 Sekunden. Wenn Sie den optionalen Timeoutparameter für die Sichtbarkeit in eine Anforderung aufnehmen, können Sie einen Mindestwert von 0 Sekunden und einen Höchstwert von 12 Stunden angeben.
Die Verwendung eines Sichtbarkeitstimeouts von 0 dient quasi als Peek-Funktionalität. Auf diese Weise abgerufene Nachrichten werden in der Regel an einen anderen Consumer zugestellt, da sich die Sichtbarkeit nicht ändert.
Zustellungsanzahl
Jedes Mal, wenn eine Nachricht mit einer GetMessages
-Anforderung oder durch Polling der Konsole abgerufen wird, erhöht sich die Zustellungsanzahl. Wenn die Zustellungsanzahl den konfigurierten Höchstwert der Queue überschreitet, wird die Nachricht an die Dead-Letter Queue gesendet.
Langes Polling
Standardmäßig wird in einer GetMessages
-Anforderung langes Polling verwendet. Die Anforderung wartet 30 Sekunden auf Nachrichten. Wenn der Timeout abläuft und keine Nachrichten zum Konsumieren verfügbar sind, gibt die Anforderung eine leere Antwort zurück. Langes Polling ist hilfreich, um enge Wiederholungsschleifen bei leeren Antworten zu vermeiden.
Consumer können dieses Verhalten ändern, indem sie den Parameter timeoutInSeconds
in ihre Anforderung aufnehmen, der Werte von 0 bis 30 Sekunden akzeptiert. Wenn Sie den Wert timeoutInSeconds
auf 0 setzen, wird eine sofortige Antwort der Queue angezeigt, unabhängig davon, ob Nachrichten verfügbar sind oder nicht.