Ответы пользователя по тегу PHP
  • PHP и AMQP, как?

    kibizoidus
    @kibizoidus
    Вы немного не разобрались в документации.

    AMQPQueue::consume() - блокирующая функция, т.е. она будет держать поток выполнения до тех пор, пока не вернется сообщение.

    Blocking function that will retrieve the next message from the queue as it becomes available and will pass it off to the callback.

    AMQPQueue::get() - неблокирующая, т.е. если задания нет - сразу же вернет FALSE.

    Retrieve the next available message from the queue. If no messages are present in the queue, this function will return FALSE immediately.

    Т.е. все, что вам нужно сделать, выглядит примерно следующим образом:

    while(true) {
        $q->consume("rcv_msg");
    }


    That's it. Заблокировав выполнение и дожидаясь RabbitMQ ничего не будет выполняться, с другой стороны сообщение моментально влетит в функцию выполнения, как только кролик пнет его в нужном направлении.
    Ответ написан
    Комментировать