1. <?php
  2. /**
  3. * 生产者
  4. */
  5.  
  6. $connection = new AMQPConnection([
  7. 'host' => '192.168.23.130',
  8. 'port' => 5672,
  9. 'login' => 'rabuser',
  10. 'password' => '123456'
  11. ]);
  12.  
  13. $connection->connect() or die('连接失败');
  14.  
  15. try{
  16.  
  17. $exchange_name = 'trades';
  18. $route_key = '/trade';
  19. //投递消息到中间件
  20.  
  21. $channel = new AMQPChannel($connection);//创建消息通道
  22.  
  23. $exchange = new AMQPExchange($channel);//通过通道连接交换几
  24. //设置通道名称
  25. $exchange->setName($exchange_name);
  26.  
  27. $data = json_encode(['time'=>time()]);
  28. //发布消息到交换机中
  29. $exchange->publish($data,$route_key);
  30.  
  31. }catch (AMQPChannelException $e){
  32. var_dump($e);
  33. }

  

  1. <?php
  2. /**
  3. * 消费者
  4. */
  5.  
  6. $connection = new AMQPConnection([
  7. 'host' => '192.168.23.130',
  8. 'port' => 5672,
  9. 'login' => 'rabuser',
  10. 'password' => '123456'
  11. ]);
  12.  
  13. $connection->connect() or die('连接失败');
  14.  
  15. try{
  16.  
  17. $exchange_name = 'trades';
  18. $route_key = '/trade';
  19. $queue_name = 'queue';
  20. //投递消息到中间件
  21.  
  22. $channel = new AMQPChannel($connection);//创建消息通道
  23.  
  24. $exchange = new AMQPExchange($channel);//通过通道连接交换几
  25. //设置通道名称
  26. $exchange->setName($exchange_name);
  27. //三种获取消息的模式,直连模式,主题模式,广播模式
  28.  
  29. $exchange->setType(AMQP_EX_TYPE_DIRECT);
  30. //声明
  31. $exchange->declareExchange();
  32.  
  33. //声明队列绑定交换机路由
  34. $queue = new AMQPQueue($channel);
  35. $queue->setName($queue_name);
  36. $queue->declareQueue();
  37.  
  38. //绑定监听获取数据
  39. $queue->bind($exchange_name,$route_key);
  40.  
  41. //消费数据,默认阻塞监听获取数据
  42. $queue->consume(function ($event,$queue){
  43. //获取数据
  44. $msg = $event->getBody();
  45.  
  46. var_dump($msg);
  47. var_dump($queue);
  48. //回应ACK
  49. $queue->ack($event->getDeliveryTag());
  50. });
  51.  
  52. }catch (AMQPChannelException $e){
  53. var_dump($e);
  54. }

  

rabbitmq简单运用的更多相关文章

  1. rabbitmq简单收发服务搭建

    消息发送.接收简单代码示例 mq.xml //rabbitmq config spring.rabbitmq.host=ip:host spring.rabbitmq.username= spring ...

  2. RabbitMQ简单应用の简单队列

    (1)首先创建一个maven项目: pom.xml,重点是配置RabbitMQ <dependencies> <dependency> <groupId>junit ...

  3. AMQP消息队列之RabbitMQ简单示例

    前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个 ...

  4. rabbitmq简单实例

    JMS组件:activemq(慢)AMQP组件(advance message queue protocol):rabbitmq和kafka 一..消息队列解决了什么问题?异步处理应用解耦流量削锋日志 ...

  5. RabbitMQ 简单的消息发送与接收

    RabbitMQ是建立在AMQP(Advanced Message Queuing Protocol,高级消息队列协议)基础上的,而AMQP是建立在TCP协议之上的. 因此,RabbitMQ是需要建立 ...

  6. RabbitMQ简单使用

    环境搭建: RabitMQ是用Elang编写的,虽然Elang本身是跨平台的,但也同时意味着搭建Rabit环境需要首先配置Elang环境.配置RabitMQ的网上教程还比较多的: windows 下 ...

  7. RabbitMQ基础组件和SpringBoot整合RabbitMQ简单示例

    交换器(Exchange) 交换器就像路由器,我们先是把消息发到交换器,然后交换器再根据绑定键(binding key)和生产者发送消息时的路由键routingKey, 按照交换类型Exchange ...

  8. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (四) -- Push API 和 Pull API

    RabbitMQ 中针对消息的分发提供了 Push API (订阅模式) 和 Pull API (主动获取) 两种模式. 在 PHP 中, 这两种模式分别通过 AMQPQueue 类中的 consum ...

  9. rabbitmq 简单示例(Hello World)

    一:消息中间件: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 RabbitMQ是实现AMQP( ...

  10. RabbitMQ学习笔记(2)----RabbitMQ简单队列(Hello World)的使用

    1. 简单队列结构图 2. 引入依赖 pom.xml文件 <dependency> <groupId>com.rabbitmq</groupId> <arti ...

随机推荐

  1. Apache BeanUtils与Spring BeanUtils性能比较

    在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性 ...

  2. RDMA——libibverbs 代码分析(1)

    下载libibverbs最新代码,https://downloads.openfabrics.org/verbs/README.html 为1.2.0版本.后面开始逐步分析libibverbs源码. ...

  3. Golang之框架篇-Windows环境bee工具运行beego

    bee工具简介及好处     bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 你可以很容易的进行 beego 项目的创建.热编译.开发.测试.和部署. 强烈推荐新手或J ...

  4. [使用多仓库解决] idea maven 下载源码出现:Cannot download sources Sources not found for: xxx

    根本原因 依赖托管仓库的库存不足.有的仓库,就是没有团队上传这个依赖.所以多加几个镜像源,总有一个仓库能找到. 解决方案 修改 maven 默认配置文件 "C:\Users\<user ...

  5. 垃圾收集器G1和CMS ,以及老年代和新生代的比例设置

    首先 1.G1是包括年轻代和年老代的GC 2.CMS是年老代GC 3.二者在某些时候都需要FullGC(serial old GC)的辅助 ###CMS收集器:CMS(ConCurrent Mark ...

  6. 请说说你对Struts2的拦截器的理解?

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 拦截器栈(Interceptor Stac ...

  7. Oracle入门基础(二)一一过滤和排序

    SQL> --查询10号部门的员工 SQL> select * from emp where deptno=10; EMPNO ENAME JOB MGR HIREDATE SAL COM ...

  8. 什么叫线程安全?servlet 是线程安全吗?

    线程安全是编程中的术语,指某个函数.函数库在多线程环境中被调用时,能够 正确地处理多个线程之间的共享变量,使程序功能正确完成. Servlet 不是线程安全的,servlet 是单实例多线程的,当多个 ...

  9. 如何实现数组与List的相互转换?在 Queue 中 poll()和 remove()有什么区别?哪些集合类是线程安全的?

    如何实现数组与List的相互转换? List转数组:toArray(arraylist.size()方法 数组转List:Arrays的asList(a)方法 /** * 〈一句话功能简述〉; * 〈 ...

  10. 什么是Viewport Meta(width详解)及在手机上的应用

    viewport是专为手机浏览器设计的一个meta标签: 有些屏幕很小有智能手机,但分辩率却可以做得很大,比如小米4的默认分辨率为:1920*1080,比许多电脑桌面的都还大,传统桌面网站直接放到手机 ...