PhpAmqpLib\Exception\AMQPConnectionClosedException CHANNEL_ERROR - expected 'channel.open'(60, 10)
时间: 2024-02-17 18:01:55 浏览: 47
这个错误通常是由于连接到 AMQP 服务器的通道没有正确打开而导致的。您需要确保在使用通道之前打开它。您可以使用 `channel.open` 方法来打开通道。以下是一个示例代码:
```php
// 创建AMQP连接
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
// 创建AMQP通道
$channel = $connection->channel();
// 打开通道
$channel->open();
```
您可以根据您的具体情况进行修改。希望这可以帮助您解决问题。
相关问题
php-amqplib CHANNEL_ERROR - expected 'channel.open'(60, 10)
这个错误通常是由于RabbitMQ管道未正确打开导致的。在使用php-amqplib时,您需要确保在使用管道之前正确打开管道。下面是一个简单的示例代码,可以帮助您正确打开RabbitMQ管道:
```php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$host = 'localhost';
$port = 5672;
$username = 'guest';
$password = 'guest';
$exchange = 'test_exchange';
$routing_key = 'test_routing_key';
$message = 'Hello, world!';
$connection = new AMQPStreamConnection($host, $port, $username, $password);
$channel = $connection->channel();
$channel->exchange_declare($exchange, 'direct', false, true, false);
$channel->queue_declare($routing_key, false, true, false, false);
$channel->queue_bind($routing_key, $exchange);
$channel->basic_publish(new \PhpAmqpLib\Message\AMQPMessage($message), $exchange, $routing_key);
$channel->close();
$connection->close();
echo "Message sent successfully!\n";
```
在这个例子中,我们首先创建了一个AMQPStreamConnection对象,并使用该对象打开了一个RabbitMQ管道。然后,我们声明了一个交换机和一个队列,并将队列绑定到交换机上。最后,我们发布了一条消息,并关闭了管道和连接。
请注意,在使用php-amqplib时,正确打开管道非常重要。如果您在使用管道之前没有正确打开管道,就会遇到类似于“CHANNEL_ERROR - expected 'channel.open'”这样的错误。
阅读全文