准备工作:
1. 搭建好rabbitmq服务器
2. 搭建好TP网站
一、 安装amqp包
composer require php-amqplib/php-amqplib
二、 网站中写一个发布者请求,往rabbitmq服务器发送数据。
app\controller\Test.php
getConnection();
$channel->queue_declare('hello', false, false, false, false);
$msg = new AMQPMessage("Hello RabbitMQ");
$channel->basic_publish($msg, '', 'hello');
echo "[x] send 'hello world\n' ";
$channel->close();
$connection->close();
}
}
rabbitmq 连接工具类 : app\Library\RabbitMQConnection.php
channel();
return [$connection, $channel];
} catch (\Exception $e) {
return [null, null];
}
}
public function closeConnectionAndChanel($channel, $connection)
{
$channel->close();
$connection->close;
}
}
相关的路由请求文件
Route::get("send", 'test/index');
这两个文件写完以后,发起一个请求
看到这一句话后,到rabbitmq管理网站上看队列里面有没有数据
接下来我们就要消费这个数据
因为消费数据是需要不断监听rabbitmq服务器传过来的数据,所有我选择有执行命令行来监听服务器。后期就可以执行这个命令脚本了。
setName('receive')
->setDescription('rabbitmq 消费队列');
}
protected function execute(Input $input, Output $output)
{
// 指令输出
$output->writeln("RabbitMQ 消费队列开始启动……\n");
$Rc = new RabbimtMQConnection();
list($connection, $channel) = $Rc->getConnection();
$output->writeln("RabbitMQ 创建通道成功……\n");
$channel->queue_declare('hello', false, false, false, false);
$callback = function ($msg) use ($output) {
$output->writeln("通过RabbitMQ获取到消费者了,该条消息是: $msg->body \n");
};
$channel->basic_consume('hello', '', false, true, false, false, $callback);
while ($channel->is_open()) {
$channel->wait();
}
}
}
这就是一个完整的rabbitmq 下的hello world的一个体验。后期我会根据rabbitmq的不同的工作模式在写不同的记录文章的。