メッセージキュー:メッセージがキューに入るときにイベントをトリガーできますか?

StackOverflow https://stackoverflow.com/questions/4255950

質問

職場では、PHPアプリケーションにメッセージキューを実装するかどうかについて議論しています。現在、ApacheのActiveMQを検討しています。私たちが完全に明らかにしていないことの1つは、キューに到着するメッセージに基づいてプロセスをトリガーすることが可能かどうかです。

これまでに発見した文献は、メッセージキューがプルベースのメカニズムであることを示しているようです。プロセスは定期的に実行され(デーモンまたはクロンとして)、キューから着信メッセージを引っ張ります。これをプッシュメカニズムに変えることは可能ですか?つまり、メッセージが届いたときにメッセージキューに実際にHTTPリクエスト(またはプロセス)を開始する方法はありますか?私たちが見つけたオプションの1つは、パブリッシュ/サブスクライブモデルですが、これにはPHPアプリを無限のループで実行して、ActiveMQインスタンスへのオープン(TCP)接続を維持する必要があります。

どんな入力も大歓迎です。

役に立ちましたか?

解決

明らかな解決策は、出版社にメッセージを保存した直後にHTTP要求を開始できるようにすることですが、これは疑問を招きます。なぜメッセージキューを使用しているのですか?

一連の消費者がキューに耳を傾け、メッセージが来るときに仕事をすることはクラッジではありません。それは良い、スケーラブルなデザインです。 (私は、無限のループでPHPプロセスを実行することには短所があることに同意します。)

たとえば、メッセージを保存するデータベースとは対照的に、メッセージキューを選択したのはなぜですか? 「プロデューサー」は、メッセージを列としてテーブルに保存し、メッセージのPKで「消費者」をトリガーできます。

他のヒント

キュー(JMSコンポーネント)からメッセージを引き出し、HTTPエンドポイント(HTTPコンポーネント)に転送するラクダルートを作成することを検討してください。 ActiveMQブローカープロセスでCamel Routeをホストすることを決定することもできます。 ActiveMQは、ActiveMQ分布のCamelコアライブラリをバンドルすることで、これを簡単にします。

これは、最近の関連 /関連する投稿です。

キャメルを使用したActiveMQからのHTTP投稿

キューを監視するアプリの設計コンセプトは、外部アプリケーションを実行する業界の方法です。 IBM WebSphere「トリガーモニターアプリケーション」をご覧ください。実装では、複数のトリガーモニターを使用して、キュー内のメッセージを処理するアプリを起動することができます。そのため、アプリがインストールされているサーバーでトリガーモニターが実行されると、スケーラビリティのために設計する場合は非常によくスケーリングできます。必要に応じて、いくつかのアプリサーバーがあります)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top