0

我有这个代码的错误(见评论)

<?

$connection = new AMQPConnection(array('host' => 'dev.rabbitmq.com'));
$connection->connect();

for ($i = 0; $i < 3; $i++) {

    // first two times it works.
    // Third - throws: 'AMQPChannelException' with message 'Server connection error: 503, message: COMMAND_INVALID - second 'channel.open' seen
    $channel = new AMQPChannel($connection);

    $queue = new AMQPQueue($channel);
    $queue->setFlags(AMQP_PASSIVE);
    $queue->setName('test' . $i);

    try {
        $queue->declare(); // create queue to get creation errors. This will throw no errors if queue exists
        $queue_exists = true;
    } catch (AMQPQueueException $e) {
        // queue does not exist, so we have error
        $queue_exists = false;
    }
}

有人帮忙吗?

4

1 回答 1

0

我无法准确确定引发错误的原因(我认为这可能是 AMQP 扩展的内部问题)。我确实让脚本像这样工作。

<?php

$connection = new AMQPConnection(array('host' => 'dev.rabbitmq.com'));
$connection->connect();

$channels = array();
$channels[] = new AMQPChannel($connection);
$channels[] = new AMQPChannel($connection);
$channels[] = new AMQPChannel($connection);

for ($i = 0; $i < 3; $i++) {

    // first two times it works.
    // Third - throws: 'AMQPChannelException' with message 'Server connection error: 503, message: COMMAND_INVALID - second 'channel.open' seen
    $channel = $channels[$i];

    if(isset($queue)){unset($queue);}
        $queue = new AMQPQueue($channel);
        $queue->setFlags(AMQP_PASSIVE);
        $queue->setName('test' . $i);

    try {
        $queue->declare(); // create queue to get creation errors. This will throw no errors    if queue exists
        $queue_exists = true;
    } catch (AMQPQueueException $e) {
        // queue does not exist, so we have error
        $queue_exists = false;
    }
}
于 2012-10-17T16:56:35.110 回答