阡陌博客 - thinkphp5.1
type: channel
link: https://www.kinmor.com/tag/thinkphp5-1/
items: thinkphp5.1 之RabbitMq应用实践
items: thinkphp5.1 in 范围查询实例

thinkphp5.1 之RabbitMq应用实践
type: item
date: 2022-08-19T13:52:00+08:00
description: 参考原作者文章：《thinkphp5.1应用rabbitMq》https://blog.csdn.net/qq_42137846/article/details/125842245为了验证实践过程，我做了相应的改动。RabbitMQ的安装请参考《centos7.5 安装RabbitMQ Erlang》△配置Rabbit文件路径如下：application|extra|rabbitmq.php代码如下<?php // +---------------------------------------------------------------------- // | rabbitMQ 示例配置 // // Exchange在定义的时候是有类型的，以决定到底是哪些Queue符合条件，可以接收消息： // fanout：所有bind到此exchange的queue都可以接收消息 // direct：通过routingKey和exchange决定的那个唯一的queue可以接收消息 // topic：所有符合routingKey(此时可以是一个表达式)的routingKey所bind的queue可以接收消息 // headers：通过headers 来决定把消息发给哪些queue(这个很少用) // +---------------------------------------------------------------------- return [ // 连接信息 'AMQP' => [ 'host' => '192.168.66.64', 'port' => '5672', 'username' => 'admin', 'password' => 'admin', 'vhost' => '/' ], //测试队列：direct 路由模式 'test_queue' => [ 'exchange_name' => 'test_exchange', //交换机名称 'exchange_type' => 'direct', //交换机运行模式(从上面四种模式中选) 'queue_name' => 'test_queue', //队列名称 'route_key' => 'test', //路由键,用于绑定队列与交换机 'consumer_tag' => 'test' //消费标签 ], //订单队列：direct 路由模式 'order_queue' => [ 'exchange_name' => 'order_exchange', //交换机名称 'exchange_type' => 'direct', //交换机运行模式(从上面四种模式中选) 'queue_name' => 'order_queue', //队列名称 'route_key' => 'order', //路由键,用于绑定队列与交换机 'consumer_tag' => 'order' //消费标签 ], //...等等其它队列 ]; △生产者路径如下：application|common|controller|MqProducer.php代码如下：<?php namespace app\common\controller; use think\Config; //引入rabbitMq所需类 use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; class MqProducer { /** * 生产者 * @param $data 控制器传来的数据 * @param $name 配置文件下rabbitmq文件前缀名 * @throws \Exception */ public function publish($data, $name) { //获取rabbitMq配置(刚刚在config文件下配置的rabbitmq信息) $amqp = Config::get('rabbitmq.AMQP'); $amqpDefail = Config::get('rabbitmq.' . $name . '_queue'); //建立连接 $connection = new AMQPStreamConnection( $amqp['host'], $amqp['port'], $amqp['username'], $amqp['password'] ); //建立通道 $channel = $connection->channel(); //初始化交换机 $channel->exchange_declare($amqpDefail['exchange_name'],…

thinkphp5.1 in 范围查询实例
type: item
date: 2020-11-11T17:37:00+08:00
description: 场景：category_ids 值为1,2,4查询 category_ids = 2 和 4的所有记录查询语句：$map['category_id']=array('in',$category_ids)❌$category_ids =1,2,3 $map[] =['category_id','in',$category_ids]; ✔