php-amqplib CHANNEL_ERROR - expected 'channel.open'(60, 10)
时间: 2023-12-18 12:02:17 浏览: 122
这个错误通常是由于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'”这样的错误。
阅读全文