PHP使用RabbitMQ消息队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP使用RabbitMQ消息队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2382字,纯文字阅读大概需要4分钟。
内容图文
1、安装amqp拓展 安装流程
2、下载工具包 php-amqplib
composer require php-amqplib/php-amqplib
1 <?php 2//配置信息 3$conn_args = array( 4 ‘host‘ => ‘127.0.0.1‘, 5 ‘port‘ => ‘5672‘, 6 ‘login‘ => ‘zcw‘, 7 ‘password‘ => ‘123456‘, 8 ‘vhost‘=>‘/‘ 9); 10$e_name = ‘exchange1‘; //交换机名 11$q_name = ‘queue1‘; //队列名 12$k_route = ‘route1‘; //路由key 1314//创建连接和channel 15$conn = new AMQPConnection($conn_args); 16if (!$conn->connect()) { 17die("Cannot connect to the broker!\n"); 18} 19$channel = new AMQPChannel($conn); 2021//创建交换机 22$ex = new AMQPExchange($channel); 23$ex->setName($e_name); 24$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型(常用的有fanout、direct、topic、headers) 25$ex->setFlags(AMQP_DURABLE); //持久化 262728//创建队列 29$q = new AMQPQueue($channel); 30$q->setName($q_name); 31$q->setFlags(AMQP_DURABLE); //持久化 3233$total = $q->declareQueue();//获取所有的消息数量 3435//绑定交换机与队列,并指定路由键 36$q->bind($e_name, $k_route); 3738//1、阻塞模式接收消息 39while(True){ 40$q->consume(‘processMessage‘); 41//$q->consume(‘processMessage‘, AMQP_AUTOACK); //自动ACK应答 42} 4344//2 非阻塞模式接收消息 可定时调用 45//if($total){ 46// for($i=0;$i<$total;$i++){ 47// $envelope = $q->get(); 48// if($envelope){ 49// $msg = $envelope->getBody(); 50// echo $msg."\n"; //处理消息 51// $q->ack($envelope->getDeliveryTag()); //手动发送ACK应答 52// } 53// } 54//}5556$conn->disconnect(); 5758/** 59 * 消费回调函数 60 * 处理消息 61*/62function processMessage($envelope, $queue) { 63$msg = $envelope->getBody(); 64echo$msg."\n"; //处理消息 65$queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答66} 67 ?>
【生产消息】
1 <?php 2//配置信息 3$conn_args = array( 4 ‘host‘ => ‘127.0.0.1‘, 5 ‘port‘ => ‘5672‘, 6 ‘login‘ => ‘zcw‘, 7 ‘password‘ => ‘123456‘, 8 ‘vhost‘=>‘/‘ 9); 10$e_name = ‘exchange1‘; //交换机名 11//$q_name = ‘queue1‘; //无需队列名 12$k_route = ‘route1‘; //路由key 1314//创建连接和channel 15$conn = new AMQPConnection($conn_args); 16if (!$conn->connect()) { 17die("Cannot connect to the broker!\n"); 18} 19$channel = new AMQPChannel($conn); 20//创建交换机对象 21$ex = new AMQPExchange($channel); 22$ex->setName($e_name); 23//发送消息 24//$channel->startTransaction(); //开始事务 25for($i=0; $i<5; ++$i){ 26$ex->publish($message, $k_route)."\n"; 27} 2829//$channel->commitTransaction(); //提交事务 3031$conn->disconnect(); 3233 ?>
原文:https://www.cnblogs.com/guliang/p/11743229.html
内容总结
以上是互联网集市为您收集整理的PHP使用RabbitMQ消息队列全部内容,希望文章能够帮你解决PHP使用RabbitMQ消息队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。