2015-06-18 13 views
5

Ich habe einen Webjob auf azurblau, mit einem QueueTrigger. Der Job ist lang (mehr als 30 Minuten)Azure WebJob QueueTrigger Wie DeleteMessage nach erhalten?

Mein Problem ist, wie die Nachricht in der Warteschlange nach dem Auslösen löschen. Die Nachricht wird unsichtbar, bis die Zeitspanne (standardmäßig 30 Sekunden) erreicht ist. Viel weniger von meiner Jobdauer. Ich vermute also, dass ich die Nachricht zu Beginn der Trigger-Methode löschen muss. Ich finde, wie man es macht, wenn Sie mit GetMessage() Methode stattdessen triggern. Aber wie mache ich das mit Trigger, weil ich das Message-Objekt .DeleteMessage() nicht ausführen lassen muss?

Antwort

3

Answered by Michael Curd on the MSDN Forums und hier zitiert:

Das SDK sollte schon damit umgehen. Wie Sie angegeben haben, wird die Nachricht standardmäßig für 30 Sekunden geleast (oder unsichtbar). Wenn der Job länger dauert, wird der Mietvertrag verlängert. Die Nachricht wird nicht für eine andere Instanz der Funktion verfügbar, es sei denn, der Host stürzt ab oder die Funktion löst eine Ausnahme aus. Wenn die Funktion erfolgreich abgeschlossen wurde, wird die Nachricht vom SDK gelöscht. Sie sollten also keinen speziellen Code für dieses Szenario schreiben müssen.