php messagelistener для activemq

В настоящее время я использую команду «Stomp» для отправки и получения / потребления сообщений в очередях activemq, но потребитель «Stomp» работает синхронно, что означает, что потребитель «Stomp» продолжает проверять, есть ли в очереди какие-либо новые сообщения. Но что мне нужно сделать, так это сделать activemq уведомлять моего потребителя, когда новое сообщение попадает в очередь. как, например, метод Onmessage () в Java. Я искал несколько дней, но все равно не повезло. мой текущий php-код (как я читаю сообщения из очереди с помощью педали):

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";
   }

person eddy    schedule 08.05.2014    source источник
comment
Это будет особенность вашего клиента php STOMP, поэтому, пожалуйста, дайте людям знать, что вы используете.   -  person Tim Bish    schedule 08.05.2014
comment
Хорошо, любое рабочее решение для любого PHP, версии Stomp будут в порядке, я могу обновить версии, если это необходимо.   -  person eddy    schedule 08.05.2014
comment
github.com/reactphp/stomp, похоже, поддерживает то, что вы хотите, но, похоже, поддерживает только STOMP 1.0   -  person Buchi    schedule 09.05.2014
comment
спасибо @Buchi. github.com/reactphp/stomp, работал асинхронно и имел много хороших функций.   -  person eddy    schedule 17.05.2014


Ответы (2)


решил проблему.

использовал библиотеку github.com/reactphp/stomp, и она отлично работала. теперь он асинхронно принимает сообщения от моего брокера сообщений.

person eddy    schedule 17.05.2014

Я проверил библиотеку reactphp / Stomp и выглядит отлично. Я думаю, что сообщения читаются в любом случае, но мне нравится управляемое событиями чувство, которое запланированный таймер добавляет в дизайн приложения. На мой взгляд, просто смирись. Для всех остальных, кто не заинтересован в использовании еще одной новой библиотеки, но все еще обеспокоен накладными расходами на бесконечный цикл, проверяющий каждый тик ЦП, вот 2 варианта для изучения: - Добавление спящего режима ($ таймаут) перед следующей проверкой (конец каждой итерации ) - Использование класса Event, распространяемого как расширение PECL (не в комплекте с PHP)

person tanovellino    schedule 10.03.2016