2011-12-20 17 views
4

私はRabbitMQを使用するPHPプロジェクト(Symfony2)を持っています。私は単純なメッセージキューとしていくつかのジョブ(メール、APIから重要なデータを送信する)を遅延させるために使用します。コンシューマーはウェブサーバー上で動作し、そのコードはウェブサーバーの一部であり、ウェブと同じに展開されます。RabbitMQ + PHPデプロイメント戦略

質問は次のとおりです。 デーモンとしてコンシューマを起動し、常に実行する方法を教えてください。 アプリをデプロイするときに、コンシューマを「正常に」シャットダウンして消費を停止するが、開始したメッセージの処理が終了するようにするにはどうすればよいですか?

もし重要であれば、配備のために私はCapifonyを使用します。

ありがとうございました!

答えて

2

これはPythonで書かれたsupervisordというものを見る価値があります。私はこれまで、RabbitMQの使用方法と同様の役割を果たすジョブキューであるGearmandの作業員のためにこれを使用しました。

+0

これは非常に有望ですが、それは消費者を正常にシャットダウンする(つまり、それらを殺さない)という1つの重要な問題は解決しません。私はそれを回避しようとします。 – gphilip

+0

ああ、PHP労働者に特定のシステム信号を聞かせ、一度受け取ってしまえば、彼らが現在の仕事を終えた後で終了するようにして解決したと思います。スーパーバイザーは、Kill -9相当品だけでなく、異なる信号を処理するように構成することもできます。 –

+0

これは私にとって良いことです。私はそれに行きます。ありがとうございました! – gphilip