Ich habe über anmutige Shutdowns here mit der WEBJOBS_SHUTDOWN_FILE und here mit Cancellation Tokens gelesen, so verstehe ich die Voraussetzung der anmutigen Shutdowns, aber ich bin mir nicht sicher, wie sie WebJobs beeinflussen, die mitten in der Verarbeitung einer Warteschlange Nachricht sind.Was passiert mit laufenden Prozessen auf einem fortlaufenden Azure WebJob, wenn die Website erneut bereitgestellt wird?
Also hier ist das Szenario:
- Ich habe einen WebJob mit Funktionen Warteschlangen zu hören.
- Die Nachricht wird zur Warteschlange hinzugefügt und der Job beginnt mit der Verarbeitung.
- Während der Verarbeitung versucht jemand, sich zu entwickeln und eine erneute Bereitstellung auszulösen.
Angenommen, ich habe meine WebJobs süchtig auf git bereitstellen drückt, wird diese deploy auch die WebJobs auslösen aktualisiert werden, die (soweit ich verstehen) wird eine Art Abschaltung Workflow in den Jobs pfiffen. Also habe ich ein paar Fragen daraus.
- Werden Jobs, die mitten in der Verarbeitung einer Warteschlangennachricht sind, die Verarbeitung der Nachricht beenden, bevor der Job beendet wird? Oder wird eine Benachrichtigung zum Herunterfahren im Wesentlichen so behandelt, als würde "diese Hündin kurz vor dem Herunterfahren stehen. Wenn Sie nichts damit zu tun haben, sind Sie SOL."
- Wenn wir SOL sind, ist unsere beste Option, Shutdowns im Wesentlichen so zu behandeln, dass Sie alles, was Sie tun, in DB-Transaktionen umwandeln und Ihren Shutdown-Handler so implementieren, dass alle Änderungen beim Herunterfahren zurückgesetzt werden.
- Wenn eine Warteschlangennachricht gerade verarbeitet wird und der WebJob beendet wird, wird diese Nachricht erneut gesendet? Wenn nicht, bedeutet das, dass mein Shutdown-Handler die Nachricht erneut anfragen muss?
- Ist es für Funktionen, die Warteschlangen hören, möglich, weitere Warteschlangennachrichten abzurufen, nachdem der Job benachrichtigt wurde, dass er heruntergefahren werden muss?
Jede Führung hier wird sehr geschätzt! Außerdem, wenn jemand andere nützliche Links hat, wie man Job-Shutdowns außer denen, die ich erwähnt habe, behandelt, wäre es großartig, wenn Sie diese teilen könnten.
Guter Aufwand. Dies ist ein bisschen mit der Frage verbunden, die ich fragte: http://stackoverflow.com/questions/28042485/what-happens-to-in-progress-jobs-when-you-deploy-a-webjob –
In der Tat ist es. Das stimmt definitiv mit meinen Ergebnissen überein, aber es ist schön, eine tatsächliche technische Erklärung dessen zu sehen, was hinter den Kulissen passiert. Ich hätte nichts dagegen, das irgendwo dokumentiert zu sehen, aber das ist sicher! – EJay
Derzeit verwirrt über die beste Möglichkeit, dieses Szenario zu behandeln - vermute ich muss alle Q-Funktionen idempotent machen: http://stackoverflow.com/questions/29164414/azure-webjob-graceful-shutdown-of-a-queue-handling- Funktion –