私たちはPHPアプリケーション用のメッセージキューを実装するかどうかについて検討しています。現在、私たちはApacheのActiveMQを見ています。私たちが完全にはっきりしていないことの1つは、キューに到着したメッセージに基づいてプロセスをトリガできるかどうかということです。メッセージキュー:メッセージがキューに入ったときにイベントをトリガできますか?
メッセージキューはプルベースのメカニズムであることがわかりました。プロセスは定期的に(デーモンまたはcronとして)実行され、受信メッセージをキューからプルします。これをプッシュメカニズムに変えることは可能ですか?つまり、メッセージが到着したときにメッセージキューが実際にHTTPリクエスト(またはプロセス)を開始する方法がありますか?私たちが見つけた1つの選択肢はPublish/Subscribeモデルですが、これは無限ループでPHPアプリケーションを実行して、ActiveMQインスタンスへのオープン(TCP)接続を維持する必要があります。
入力があれば幸いです。
良い質問です。 MQを検討しているのは、アプリケーションが柔軟なワークフローに向かって動き出しているからです。ビジネスロジックは、プロセスの次のステップを決定します。メッセージキューでサポートされている「ビン」パラダイムを使用するのは当然のことです。 – kander
リッスンのコンシューマーは、私がクルージングと考えている部分ではなく、非常に健全なアーキテクチャのように聞こえます。それはwhile(1){$ client-> fetch(); }それは望ましくない構造です。 – kander
私は参照してください。私の個人的な意見は、PHPコンシューマデーモンの実行を再考すべきです。すべてのメッセージがコンシューマをトリガする場合、MQを使用する際のポイントはあまりありません(1,000,000のメッセージが同時に到着したときどうなりますか?) - コンシューマコードをプロデューサから呼び出すこともできますその場合は。 – aib