我有一个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服务器。
为什么会发生这种情况?
提前致谢