我目前正在使用stomp来发送和接收/使用activemq队列中的消息,但是stomp使用者正在同步工作,这意味着stomp使用者会一直检查队列中是否有新消息。但我需要做的是在新消息进入队列时使activemq通知我的stomp使用者。比如Java中的Onmessage()方法。我搜索了几天但仍然没有运气。 我当前的php代码(我如何使用stomp从队列中读取消息):
while (true) {
$frame = $stomp->readFrame();
if ($frame != NULL) {
print "Received: " . $frame->body . " - time now is " . date("Y-m-d H:i:s"). "\n";
$stomp->ack($frame);
}
else {
print "No frames to read\n";
}
答案 0 :(得分:0)
解决了这个问题。
使用了github.com/reactphp/stomp库,它运行得很好。 它现在异步使用来自我的消息代理的消息。
答案 1 :(得分:0)
我检查了reactphp / stomp库,看起来很棒。我认为消息是以任何一种方式读取的,但我喜欢计划的计时器添加到应用程序设计中的事件驱动的意义。在我看来,就这样吧。 对于所有其他对使用另一个新库不感兴趣但仍然担心无限循环检查每个CPU标记的开销的人,这里有两个选项可供探索: - 在下次检查之前添加sleep($ timeout)(每次迭代结束) - 使用分发为PECL扩展的Event类(不与PHP捆绑)