调用未定义的方法AMQPConnection :: channel()

时间:2017-09-22 12:08:14

标签: php rabbitmq

我安装了最新版本og php-amqp,但似乎无法使用方法channel()。这是代码

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


require_once __DIR__.'/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;


$cnn = new AMQPConnection();

// set the login details
$cnn->setLogin('guest');
$cnn->setPassword('guest');

if ($cnn->connect()) {
    echo "Established a connection to the broker";
}
else {
    echo "Cannot connect to the broker";
}

$channel = $cnn->channel();

$channel->queue_declare('email_queue', false, false, false, false);

$data = 'lorem ipsum';

$msg = new AMQPMessage($data, array('delivery_mode' => 2));
$channel->basic_publish($msg, '', 'email_queue');

?>

这就是我得到的

  

建立与经纪人的连接   致命错误:未捕获错误:   调用未定义的方法AMQPConnection :: channel()in   /var/www/html/rabbit.php:26堆栈跟踪:#0 {main}被投入   第26行/var/www/html/rabbit.php

1 个答案:

答案 0 :(得分:0)

我这样解决了

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


require_once __DIR__.'/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;


$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$cnn = new AMQPConnection();

$channel = $connection->channel();


if ($cnn->connect()) {
    echo "Established a connection to the broker";
}
else {
    echo "Cannot connect to the broker";
}


$channel->queue_declare('rand', false, false, false, false);

$data = rand(35,887);

$msg = new AMQPMessage($data, array('delivery_mode' => 2));
$channel->basic_publish($msg, '', 'rand');

$channel->close();
$connection->close();
?>