Alle,Amazon Elastic Beanstalk Worker cronjob (SQS) löst gleiche Nachricht mehrmals
Ich habe eine ziemlich beunruhigende Problem mit meinem Amazon Elastic Beanstalk Arbeiter mit SQS kombiniert, die einen cron-Job Scheduling bieten soll - das alles läuft mit PHP.
Folgendes Szenario - Ich brauche ein PHP-Skript, das regelmäßig im Hintergrund ausgeführt wird und möglicherweise über Stunden läuft. Ich sah diese nette Einleitung, die genau mein Szenario zu decken scheint (AWS Worker Environments - sehen Sie die periodische Aufgabe Teil)
Also ich lese ziemlich viele HowTos und richten Sie eine EBS-Worker mit der SQS (die eigentlich automatisch während der Erstellung erfolgt des Arbeiters) und lieferte die Cron-Konfiguration (cron.yaml) in meinem Implementierungspaket.
Das Cron-Skript wird ordnungsgemäß erkannt. Der sqs-Daemon startet, Nachrichten werden in die Warteschlange gestellt und lösen mein PHP-Skript genau nach Plan aus. Das Skript wird ausgeführt und alles funktioniert einwandfrei.
Die Konfiguration der Warteschlange wie folgt aussieht: SQS configuration
jedoch nach einiger Zeit der Verarbeitung (das Skript noch damit beschäftigt ist - und NO ist es nicht der nächste geplante Lauf ^^) eine zweite Nachricht geöffnet und eine weitere Instanz des gleichen Skripts wird ausgeführt, und eine andere, und eine andere ... in genau 5 Minuten Intervallen.
Ich vermute, irgendwie wird die Nachricht nicht aus der Warteschlange entfernt (obwohl ich dafür gesorgt habe, dass das Skript den Status 200 zurücksendet), was zu einer neuen Nachricht führt, wenn das Skript zu lange läuft.
Gibt es eine Möglichkeit, das Entstehen einer anderen Nachricht zu verhindern? Sagen Sie der Warteschlange oder dem sqs-Daemon, keine neuen Flugnachrichten zu erstellen. Muss ich die Nachricht in meinem Code entfernen? Obwohl das Tutorial besagt, dass es automatisch passieren sollte
Ich möchte nur das Skript auslösen, entfernen Sie die Nachricht aus der Warteschlange und lassen Sie das Skript ausgeführt werden. Keine ausgefallenen Fallback/Retry-Mechanismen bitte :-)
Ich verbrachte viele Stunden damit, etwas im Internet zu finden. Erfolglos. Jede Hilfe wird geschätzt.
Dank
Hey Michael, danke für die Antwort. Du hast recht. Es ist die gleiche Nachricht. Ich sende 200 wie hier beschrieben [link] (http://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response) aber es täuscht den Daemon nicht. Ich werde ein bisschen mehr damit experimentieren. Falls ich 200 nicht schnell genug senden kann - gibt es eine Möglichkeit, das Inaktivitäts-Timeout zu verlängern oder zu verhindern, dass die Warteschlange die Nachricht erneut hervorbringt? – Jarek