すべてをトリガし、アマゾンElastic Beanstalkで労働者のcronジョブ(SQS)は、同じメッセージを複数回
私はcronジョブのスケジューリングを提供することになっているSQS、と組み合わせる私のアマゾンElastic Beanstalkで労働者とはかなり不穏な問題を持っている - このすべてをPHPで動作します。
次のシナリオ - 最終的に何時間も実行されるバックグラウンドで定期的に実行されるPHPスクリプトが必要です。 - 定期的な仕事の部分を参照してください)
私は非常にたくさんのハウツォを読んで、実際には作成中に自動的に行われるEBSワーカーを設定しました私の展開パッケージ内にcron config(cron.yaml)を提供しました。
cronスクリプトが正しく認識されています。 sqsデーモンが起動し、メッセージがキューに入れられ、スケジュールどおりにPHPスクリプトが起動されます。スクリプトは実行され、すべて正常に動作します。
キューの構成は次のようになります。しかし(スクリプトはまだ忙しいです - とNOそれは、次のスケジュールの実行^^ではありません)処理のいくつかの時間後に SQS configuration
2番目のメッセージが開かれ、同じスクリプトの別のインスタンスが実行され、別のインスタンスが実行され、別のインスタンスが正確に5分間隔で実行されます。
私は、何らかの理由でメッセージがキューから削除されないことを確認しましたが(スクリプトがステータス200を返すようにしていますが)、スクリプトが長時間実行されると新しいメッセージの作成に終わります。
他のメッセージの発生を防ぐ方法はありますか?新しいフライトメッセージを作成しないようにキューまたはsqsデーモンに伝えますか?コード内のメッセージを削除する必要がありますか?チュートリアルでは自動的に実行するように指示していますが、
私はスクリプトを起動し、メッセージをキューから削除してスクリプトを実行させたいと思います。空想のフォールバック/リトライのメカニズムはありません:-)
インターネットで何かを見つけようと多くの時間を費やしました。失敗しました。どんな助けもありがとうございます。
おかげ
ヘイマイケル、応答のおかげで。あなたが正しい。それは同じメッセージです。私はここに記載されているように200を送る[リンク](http://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response)それはデーモンをだますことはありません。もう少し試してみます。 Inactivity Timeoutを延長するか、またはキューがメッセージを再び生成しないようにする方法はありますか? – Jarek