php amqp bug与频道创建



我有这个代码的错误(请参阅注释)

<?
$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;
    }
}

有人帮助?

我无法确切地确定为什么要丢弃该错误(我认为这可能是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;
    }
}

最新更新