我有这个代码的错误(请参阅注释)
<?
$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;
}
}