2015-02-02 7 views
5

Wie funktioniert die Verarbeitung von Giftnachrichten für Azure WebJobs SDK ServiceBusTrigger? Ich suche die Servicebus Warteschlange Nachrichten zu schieben, die aus der Warteschlange entfernt wurden mehr als ‚x‘ mal auf eine andere ServiceBus (oder) SpeicherwarteschlangeAzure WebJobs und ServiceBusTrigger

Die Online-Dokumentation here und here und SDK-Beispiele aus here nicht haben Beispiele dafür, wie Die Behandlung von Giftnachrichten funktioniert für ServiceBusTrigger. Ist diese Arbeit in Arbeit?

Ich habe versucht, eine benutzerdefinierte Gift Nachricht Implementierung dequeueCount Parameter Umgang mit, aber es sieht nicht, dass es für ServiceBusTriggers unterstützt wird, während ich eine Laufzeitausnahme {"Cannot bind parameter 'dequeueCount' when using this trigger."}

public static void ProcessMessage([ServiceBusTrigger(topicName: "abc", subscriptionName: "abc.gdp")] NotificationMessage message, 
      [Blob("rox/{PayloadId}", FileAccess.Read)] Stream blobInput, Int32 dequeueCount) 
     { 
      throw new ArgumentNullException(); 
     } 

Antwort

6

Während Sie nicht die dequeueCount Eigenschaft für ServiceBus Nachrichten bekommen können, können Sie immer statt NotificationMessage-BrokeredMessage binden und die Eigenschaft von ihm erhalten.

6

Es sieht aus wie WebJobs dies bei intern behandelt bekommen der Moment.

Referenz: How to use Azure Service Bus with the WebJobs SDK

Spezifische Abschnitt:

Wie ServicebusTrigger arbeitet

Das SDK eine Nachricht in PeekLock Modus empfängt und ruft komplett auf der Nachricht, wenn die Funktion erfolgreich abgeschlossen wurde, oder ruft Abandon auf, wenn die Funktion fehlschlägt. Wenn die Funktion länger als das PeekLock-Zeitlimit ausgeführt wird, wird das Schloss automatisch erneuert.

Der Serice-Bus führt seine eigene Poison-Queue-Verarbeitung aus, so dass weder das WebJobs-SDK noch das WebJobs-SDK von diesem konfiguriert oder konfiguriert werden kann.

+0

Ich finde die ServiceBusTrigger zu sein ... faszinierend. Wenn ich den Status für den Funktionsaufruf im WebJobs-Dashboard überprüfe, wird der Status "Erfolg" mit der Laufzeit in Millisekunden für einen noch nicht beendeten Aufruf angezeigt. Es ist ein langer Prozess (> 10 Minuten), aber der Status ist sofort "Erfolg". Gibt der ServiceBusTrigger den Erfolg sofort zurück und verarbeitet die Nachricht dann? – Anton

0

Um Brendan Greens Antwort hinzuzufügen, ruft das WebJobs-SDK Abandon für Nachrichten auf, die nicht verarbeitet werden konnten. Nach der maximalen Anzahl von Wiederholungen werden diese Nachrichten vom Dienstbus in die Warteschlange für nicht zustellbare Nachrichten verschoben. Die Eigenschaften, die definieren, wann eine Nachricht in die Warteschlange für nicht zustellbare Nachrichten verschoben werden soll, wie maximale Zustellungsanzahl, Lebenszeit und PeekLock-Dauer, können in Service Bus -> Warteschlange -> Eigenschaften geändert werden.

Sie können weitere Informationen über SB Dead Letter Queue finden Sie hier: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dead-letter-queues