1、安装rabbitmq
怎么安装rabbitmq请查看之前课程,如果已经安装,请略过此步。
2、创建vendor文件夹或是直接采用PHP框架
mkdir vendor
3、进入文件
cd vendor
4、安装php扩展
composer require php-amqplib/php-amqplib
5、进入上级创建worker文件夹
cd ../
mkdir worker
6、进入worker文件并创建生产者php
cd worker
touch pro.php
7、输入worker生产者内容
<?php
require_once '../vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$v_host = 'order';
$queue_name = 'task_queue';
$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);
$channel = $connection->channel();
$channel->queue_declare($queue_name,false,true,false,false);
for($i=1;$i<=10;$i++){
$data = 'this is '.$i.' message';
$msg = new AMQPMessage($data,['delivery_mode'=>AMQPMessage::DELIVERY_MODE_PERSISTENT]);
$channel->basic_publish($msg,'',$queue_name);
}
$channel->close();
$connection->close();
8、创建消费者php
touch worker.php
9、输入worker消费者内容
<?php
require_once '../vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$v_host ='order';
$queue_name = 'task_queue';
$connection = new AMQPStreamConnection('localhost',5672,'wangyulong','wangyulong',$v_host);
$channel = $connection->channel();
$channel->queue_declare($queue_name,false,true,false,false);
$callback = function($msg){
echo 'received ',$msg->body,"\n";
$msg->ack();
};
$channel->basic_qos(null,1,null);
$channel->basic_consume($queue_name,'',false,false,false,false,$callback);
while($channel->is_open()){
$channel->wait();
}
$channel->close();
$connection->close()
10、执行生产者
php pro.php
11、执行消费者
php worker.php
此时,10条数据很快就执行完毕。如果你再复制一份消费者2出来,与消费者1同时执行,这个时候你重新执行以下生产者,你会发现,消费者1的结果展示是1 3 5 7 9,消费者2的结果展示是 2 4 6 8 10。这就是rabbitmq消费者最高的硬实力
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » RabbitMQ-消息队列之work使用
发表评论 取消回复