官方示例地址
ps: 这是都是使用php-cli运行的
使用方法:打开2个shell窗口,一个运行php send.php
,一个运行php receive.php
<?php
/**
* 生产者
* send.php
*/
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
// 创建连接
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
// 声明队列: hello队列
$channel->queue_declare('hello', false, false, false, false);
// 创建消息
$msg = new AMQPMessage('Hello World!');
// 发送消息, 发送到hello队列
$channel->basic_publish($msg, '', 'hello');
// 执行成功后输出文字
echo " [x] Sent 'Hello World!'\n";
// 关闭连接
$channel->close();
$connection->close();
?>
<?php
/**
* 消费者
* receive.php
*/
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
// 创建连接
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
// 声明队列
$channel->queue_declare('hello', false, false, false, false);
// 提示文字, 无特殊原意义
echo " [*] Waiting for messages. To exit press CTRL+C\n";
// 回调函数: 处理生产者传递数据的地方
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
};
// 接受队列传递数据, 并交给回调函数callback处理
$channel->basic_consume('hello', '', false, true, false, false, $callback);
// 消费者常驻内存方法: 一个死循环结构体
while ($channel->is_consuming()) {
$channel->wait();
}
// 关闭连接
$channel->close();
$connection->close();
?>