簡體   English   中英

PHP理論中的Stomp / ActiveMQ-如何模擬Java的MDB?

[英]Stomp / ActiveMQ in PHP theory - how to emulate Java's MDBs?

如何在PHP中創建等效於消息驅動的Bean?

因此,我知道可以通過Stomp協議向ActiveMQ發送()消息,並且在ActiveMQ隊列中有可用消息時,可以將()連接到ActiveMQ,然后再讀取到readFrame()。

我不了解的是如何解決從隊列接收的消息的異步處理問題。

如果您有一個線程一直在隊列中等待(並阻塞)直到有線程進入,這是否意味着您一次只能在PHP中處理一條消息?

在Java EE MDB中,您不必擔心線程,因為應用服務器會在需要時實例化MDB,但是我不了解如何在PHP中創建一個偵聽ActiveMQ隊列的高吞吐量應用程序。

有任何想法嗎?

目前還不清楚您在哪種意義上是指PHP,Web所用語言中的PHP或Web服務器中使用的運行時中的PHP?

但是,我將創建一個單獨的php腳本,並將其與從Web應用程序調用的任何腳本分開啟動。 例如,當服務器啟動並具有讀取STOMP消息的循環時,就像您描述的那樣。

然后,您將如何使其與Web應用程序通信? 簡單地以某種方式處理消息的內容並將其存儲在Web應用程序數據庫中。 從本質上講,這也是JavaEE MDB的工作方式,但是,您已經注意到,有一個容器來處理MDB線程的啟動。

關於線程:盡管並不是真正的選擇,但您可以在PHP中派生進程。 看這個例子: 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(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM