0

如何在 PHP 中创建等效的消息驱动 Bean?

所以,我知道可以通过 Stomp 协议向 ActiveMQ 发送()消息,并且当 ActiveMQ 的队列中有可用消息时,可以先连接()到 ActiveMQ,然后再到 readFrame()。

我不明白的是如何解决从队列接收到的消息的异步处理问题。

如果您有一个线程一直在队列中等待(并阻塞)直到其中有东西,这是否意味着您在 PHP 中一次只能处理一条消息?

在 Java EE MDB 中,您不必担心线程,因为应用服务器会在需要时实例化 MDB,但我不明白如何在 PHP 中创建一个侦听 ActiveMQ 队列的高吞吐量应用程序。

有任何想法吗?

4

1 回答 1

0

不清楚您在哪种意义上指的是 PHP,PHP 是指语言中的 PHP,还是运行时与 Web 服务器一起使用的 PHP?

但是,我会创建一个单独的 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 回答