我有这段代码的错误(见评论)
<?
$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;
}
}
有人帮忙吗?
答案 0 :(得分: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;
}
}