1

私は、Rabbit MQ サーバーに接続してメッセージを取得する PHP プログラムを持っています。この機能を関数内に配置しました。

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
}

これはうまくいきます。ただし、スレッド内 (1 つのスレッドのみ) から関数 get_messages() を実行しようとすると、コードは $connection->connect() でスタックします。Rabbit サーバーに接続できません。

なぜこれが起こるのですか?

前もって感謝します

4

0 に答える 0