在一个线程中使用PHP AMQPConnection

时间:2012-12-06 18:50:31

标签: php multithreading rabbitmq amqp

我有一个PHP程序,我连接到Rabbit MQ服务器并检索消息。我已将此功能放在一个函数中:

function get_messages()
{
    $connection = new AMQPConnection();
    $connection->setLogin($rabbit_username);
    $connection->setPassword($rabbit_passwd);
    $connection->setHost($rabbit_host);

    while (!$connection->connect())
    {
            echo "## Trying to connect to Rabbit MQ...\n";
            sleep(1);
    }

    $amqpchn = new AMQPChannel($connection);
    $mq = new AMQPQueue($amqpchn);
    $mq->setName("myqueue");
    $mq->setFlags(AMQP_DURABLE|AMQP_PASSIVE);
    $mq->declare();   // must declare then bind
    $mq->bind("my.exchange","my.routing");

    // do stuff
}

这很好用。但是,当我尝试从一个线程(只有一个线程)内部运行函数get_messages()时,代码卡在$ connection-> connect()。它无法连接到Rabbit服务器。

为什么会发生这种情况?

提前致谢

0 个答案:

没有答案