0

PHP でメッセージ駆動型 Bean に相当するものを作成するにはどうすればよいですか?

したがって、Stomp プロトコルを介して ActiveMQ に send() メッセージを送信できること、および ActiveMQ のキューにメッセージがある場合に ActiveMQ に connect() してから readFrame() を実行できることを理解しています。

私が理解していないのは、キューから受信したメッセージの非同期処理の問題をどのように解決するかです。

何かがキューに入るまでキューで常に待機している (およびブロックしている) スレッドが 1 つある場合、PHP では一度に 1 つのメッセージしか処理できないということですか?

Java EE MDB では、アプリ サーバーが必要なときに MDB をインスタンス化するため、スレッドについて心配する必要はありませんが、ActiveMQ キューをリッスンする高スループット アプリケーションを PHP で作成する方法がわかりません。

何か案は?

4

1 に答える 1

0

PHP を言語として、PHP を Web サーバーで使用されるランタイムとして、どちらの意味で参照しているのか、はっきりしていませんか?

ただし、別の php スクリプトを作成し、Web アプリケーションから呼び出されるスクリプトとは別に開始します。あなたが説明したように、サーバーが起動し、STOMPメッセージを読み取るループがある場合など。

では、Web アプリケーションと通信するにはどうすればよいでしょうか。メッセージの内容を何らかの方法で処理し、Web アプリケーション データベースに保存するだけです。これは基本的にJavaEE MDBも同様に機能する方法ですが、お気づきのように、MDBスレッドの開始を処理するコンテナがあります。

スレッド化について: PHP でプロセスを fork することはできますが、スレッド化は実際にはオプションではありません。この例を見てください: http://us.php.net/pcntl_fork

// fork a php script into two processes. Then make each process
if (pcntl_fork() == -1) {
 die('Forking failed');
} 
// This is run twice in different processes, one main process and one child.
run_message_listener_loop(); 
于 2012-09-02T09:38:46.917 に答える