1,默认已经安装好了rabbitmq: 参考 http://www.cnblogs.com/spicy/p/7017603.html

2,安装rabbitmq客户端: 方法1: pecl 扩展安装  方法2:composer安装

  我是用第二种: composer require php-amqplib/php-amqplib

3,新建一个发送的路由 和 接受的路由(tp5)

  Route::rule('test','index/index/test1');

  Route::rule('getmsg','index/receiver/receive');

4,发布信息的方法:
  
<?php
namespace app\index\controller; use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
use validator\Validator; class Index
{
//rbmp example
public function test1()
{
$connection = new AMQPStreamConnection('localhost', 5672, 'bitch', 'bitch');
$channel = $connection->channel();
$channel->queue_declare('hello', false, true); $sendMsg = [
'name'=>'kevin'.rand(1,100),
'phone'=>'171921743'.rand(1,100),
]; $msg = new AMQPMessage(json_encode($sendMsg));
$channel->basic_publish($msg, '', 'hello');
echo " [x] Sent 'Hello Kevin!'\n";
$channel->close();
$connection->close();
}

 5,消费信息的方法:

  

<?php
namespace app\index\controller; use PhpAmqpLib\Connection\AMQPStreamConnection; class Receiver
{
public function receive()
{
set_time_limit(0);
$connection = new AMQPStreamConnection('localhost', 5672, 'bitch', 'bitch');
$channel = $connection->channel();
$channel->queue_declare('hello', false, true); $receiver = new self();
$channel->basic_consume('hello', '', false, true, false, false, [$receiver, 'callFunc']); while(true) {
$channel->wait();
}
$channel->close();
$connection->close();
} public function callFunc($msg) {
$content = json_decode($msg->body,true); //把用户信息插入数据库
db('user_info')->insert([
'ui_username'=>$content['name'],
'ui_phone'=>$content['phone'],
]); } }

注意:  我们公司是把消费消息做成了常驻



  

 

php如何使用rabbitmq实现发布消息和消费消息(tp框架)(第一篇)的更多相关文章

  1. php如何使用rabbitmq实现发布消息和消费消息(一对多)(tp框架)(第二篇)

    一个publisher发布消息  多个个customer接受消息 1:准备工作参照: http://www.cnblogs.com/spicy/p/7886820.html 2,:路由: 3: 方法: ...

  2. 2.RABBITMQ 入门 - WINDOWS - 生产和消费消息 一个完整案例

    关于安装和配置,见上一篇 1.RABBITMQ 入门 - WINDOWS - 获取,安装,配置 公司有需求,要求使用winform开发这个东西(消息中间件),另外还要求开发一个日志中间件,但是也是要求 ...

  3. RabbitMQ 消费消息

    1, 创建一个 springboot 项目, 导入依赖(和生产者一致) 2, application.properties (基础配置和生产者一致, 消费者需要再额外配置一些) # rabbitmq ...

  4. RabbitMQ入门_05_多线程消费同一队列

    A. 多线程消费同一队列 参考资料:https://www.rabbitmq.com/tutorials/tutorial-two-java.html 消费一条消息往往比产生一条消息慢很多,为了防止消 ...

  5. rabbitMQ应用,laravel生产广播消息,springboot消费消息

    最近做一个新需求,用户发布了动态,前台需要查询,为了用户读取信息响应速度更快(MySQL很难实现或者说实现起来很慢),所以在用户动态发布成功后,利用消息机制异步构建 redis缓存 和 elastic ...

  6. SpringBoot 整合 RabbitMQ(包含三种消息确认机制以及消费端限流)

    目录 说明 生产端 消费端 说明 本文 SpringBoot 与 RabbitMQ 进行整合的时候,包含了三种消息的确认模式,如果查询详细的确认模式设置,请阅读:RabbitMQ的三种消息确认模式 同 ...

  7. Python操作rabbitmq系列(二):多个接收端消费消息

    今天,我们要逐步开始讨论rabbitmq稍微高级点的耍法了.了解这一步,对我们设计高并发的系统非常有用.当然,还可以使用kafka.不过还是算了,有几个硬性条件不支持,还是用rabbitmq吧. 循环 ...

  8. RabbitMQ多消费者顺序性消费消息实现

    最近起了个项目消息中心,用来中转各个系统中产生的消息,用到的是RabbitMQ,由于UAT环境.生产环境每台消费者服务都是多台,有些消息要求按顺序消费,所以需要采取一定的措施保证消息的顺序消费,下面讲 ...

  9. SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)

    1.安装erlang语言环境 1.1 创建 erlang安装目录 mkdir erlang 1.2 上传解压压缩包 上传到: /root/ 解压缩# tar -zxvf otp_src_22.0.ta ...

随机推荐

  1. IntelliJ IDEA 2017版 SpringBoot的关闭自动配置和自定义Banner

    一.关闭自动配置 在jar包下找下边的名字    设置关闭自动配置jar    多个的时候配置       二.自定义Banner   (1)网站搜索一个图案.网址:http://patorjk.co ...

  2. 抓包工具 - HttpWatch(功能详细介绍)

    HttpWatch是功能强大的网页数据分析工具,集成在IE工具栏,主要功能有网页摘要.cookies管理.缓存管理.消息头发送/接收,字符查询.POST数据.目录管理功能和报告输出.HttpWatch ...

  3. Hdu2181 哈密顿绕行世界问题 2017-01-18 14:46 45人阅读 评论(0) 收藏

    哈密顿绕行世界问题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  4. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed(在64位模式下运行安装了32位的Oracle客户端组件时,会发生此问题)

    部署win服务时出现下面的问题: 在事件查看器中看到如下错误: 日志名称: Application来源: ***调度服务日期: 2014/5/21 12:53:21事件 ID: 0任务类别: 无级别: ...

  5. Using Integrated SOA Gateway in Oracle EBS(websevice)

    http://blog.csdn.net/pan_tian/article/details/10159935 Oracle EBS如何与第三方系统相集成?比如这样的需求,X系统知道物料编码,需要从EB ...

  6. 如何充分利用 Windows Phone 高清屏幕

    Nokia 最近发布两款6寸大屏手机:Lumia 1520 和 Lumia 1320.为了支持这种设备 WP 升级了操作系统GDR3 支持了 1080P 的高清分辨率(1520),虽然GER3 是提供 ...

  7. Postgres重置自增长id列(reset sequence)

    简单的两个方法,个人比较喜欢第一个 ①ALTER SEQUENCE seq RESTART WITH 1;② SELECT setval('sequence_name', 0); 参考自http:// ...

  8. IDEA13 项目配置

    之前用了一段时间的idea,有些老的代码,用eclipse跑了一下,比较麻烦,于是试用一下idea,最后,项目可以顺利跑起来. 对项目的配置,主要是在F4中,即:Module Setting,在模块的 ...

  9. 【TFS错误】TF30063: 您没有访问 Microsoft-IIS/8.5 的权限

    问题现象 开发人员报告,所有的生成都失败了,日志显示下载源代码出错,系统提示错误信息为"-TF30063: 您没有访问 Microsoft-IIS/8.5 的权限-". 图1 - ...

  10. 【LongIntervalRetries】让我们来实现支付宝的异步回调方案

    功能说明 LongIntervalRetries是基于Quartz.Net的一个长时间间隔重试的类库,其主要解决何时执行以及执行结果反馈的问题. 产生的原因 简单的说,我们提供了一系列的API供第三方 ...