概述

生产者生产数据至 RabbitMQ 队列,消费者消费 RabbitMQ 队列里的数据。

详细

代码下载:http://www.demodashi.com/demo/10723.html

一、准备工作

1、安装 RabbitMQ 服务和 RabbitMQ Management

RabbitMQ在windows下的安装 (点击查看) 

RabbitMQ官网(可下载安装包)(点击查看)

 

2、在 RabbitMQ 管理界面创建用户 test 密码 test,创建名为 test_vhost 的 Virtual Hosts ,将 test_vhost 分配 给 test用户

3、本实例主要演示如何发送消息至 RabbitMQ 队列 ,以及如何消费 RabbitMQ 队列的消息

二、程序实现

1、程序结构

2、实现思路

配置发送的 Exchange 和 Queue

    <rabbit:queue id="queue.ljaer.test" name="queue.ljaer.test"auto-declare="true" auto-delete="false" exclusive="false" durable="true"declared-by="rabbitAdmin" /><!-- Exchange Type 为   topic 配置方法 --><rabbit:topic-exchange id="exchange.topic.producer"auto-declare="true" name="exchange.topic.producer" auto-delete="false"durable="true" declared-by="rabbitAdmin"><rabbit:bindings><rabbit:binding pattern="queue.ljaer.test" queue="queue.ljaer.test" /></rabbit:bindings></rabbit:topic-exchange>

连接 RabbitMQ 发送数据至队列

public class RabbitmqProducerTest {private static ApplicationContext context;public static void main(String[] args) {context = new ClassPathXmlApplicationContext("send-rabbitMq.xml");AmqpTemplate amqpTemplate = context.getBean(AmqpTemplate.class);JSONObject json = new JSONObject();json.put("name", "张三");json.put("age", "15");amqpTemplate.convertAndSend("queue.ljaer.test", json);//amqpTemplate.convertAndSend("exchange.topic.producer","queue.ljaer.test", json);System.out.println("success");}
}

配置监听

    <!--定义queue 接收数据 --><rabbit:queue id="queue.ljaer.test" name="queue.ljaer.test"auto-declare="true" auto-delete="false" exclusive="false" durable="true"declared-by="rabbitAdmin" /><!-- 消息监听器 --><bean id="rabbitmqConsumerTest" class="com.test.mq.RabbitmqConsumerTest" /><!-- 队列监听 --><rabbit:listener-containerconnection-factory="connectionFactory" acknowledge="auto"><rabbit:listener queues="queue.ljaer.test" ref="rabbitmqConsumerTest" /></rabbit:listener-container>

监听消费 RabbitMQ 队列的数据

public class RabbitmqConsumerTest implements MessageListener {public void onMessage(Message message) {System.out.println("receive message:{}"+message.getBody());try {String s = new String(message.getBody(), "UTF-8");System.out.println("------>MQ接收到的数据:"+s);} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

3、配置文件说明

#mq
mq.host=192.168.99.100
mq.username=test
mq.password=test
mq.port=5672
mq.vhost=/test_vhost

三、运行效果

1、导入项目至 Eclipse,修改 rabbit.properties 里面的连接信息,连接至你本地的 RabbitMQ 服务

2、执行 RabbitmqProducerTest 的 main 方法,发送消息至 RabbitMQ 队列

3、执行 RabbitmqConsumerMain 的 main 方法,进行队列监听,消费 RabbitMQ 队列里的数据

消费完之后,在 RabbitMQ Managemenet 里面查看也会看到队列数据减少

四、其他补充

1、注意用 guest 用户创建 test 用户之后,需要使用 test 用户登录才能看到该用户下的队列数据

2、如果选择其他类型的 exchange ,注意配文件与 mq 上保持一致

代码下载:http://www.demodashi.com/demo/10723.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

RabbitMQ消息队列生产者和消费者相关推荐

  1. 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列

    QuartZ定时任务+RabbitMQ消息队列 一 .QuartZ定时任务解决订单系统遗留问题 情景分析: 在电商项目中 , 订单生成后 , 数据库商品数量-1 , 但是用户迟迟不进行支付操作 , 这 ...

  2. 初探 RabbitMQ 消息队列

    初探 RabbitMQ 消息队列 rabbitmq基础概念常见应用场景导入依赖属性配置具体编码定义队列实体类控制器消息消费者主函数测试总结说点什么 SpringBoot 是为了简化 Spring 应用 ...

  3. 消息队列——RabbitMQ消息队列集群

    RabbitMQ消息队列集群 消息队列/中间件 RabbitMQ详解 RabbitMQ单机部署 RabbitMQ集群部署 消息队列/中间件 一.前言 在我们秒杀抢购商品的时候,系统会提醒我们稍等排队中 ...

  4. 【深入理解RabbitMQ原理】RabbitMQ 配置,生产者和消费者

    RabbitMQ 配置,生产者和消费者 1. 生产者的配置 1)配置都要先声明队列 队列的声明方式: <rabbit:queueid="Bgate_Bgate1001Response_ ...

  5. php中rabbitmq消息乱码,PHP实现RabbitMQ消息队列(转)

    本篇文章给大家带来的内容是关于PHP和RabbitMQ实现消息队列的完整代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 先安装PHP对应的RabbitMQ,这里用的是 php_a ...

  6. RabbitMQ消息队列常见面试题总结

    1.什么是消息队列: 1.1.消息队列的优点: (1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的.消息 ...

  7. RabbitMQ消息队列(一)《Java-2021面试谈资系列》

    RabbitMQ RabbitMQ消息队列 一.中间件 1.什么是中间件 2.中间件技术及架构概述 3.消息中间件 1.消息中间件的分布式架构 2.消息中间件使用场景 3.常见的消息中间件 4.消息中 ...

  8. JAVA03_21学习总结(RabbitMQ消息队列)

    今日内容 1. RabbitMQ 消息队列 Rabbitmq 消息队列基于AMQP协议的消息队列就是将本来一次性完成的,耗时的,需要等待的操作分离出来-形成一个单独的模块,就是消息队列-例子:普通方式 ...

  9. RabbitMQ消息队列

    RabbitMQ消息队列 Helloworld workQueue思想 消息应答机制 若消费者在执行任务中挂掉了,而Rabbitmq一旦发出消息就将该消息删除,就导致消息丢失,为保证消息不丢失,Rab ...

最新文章

  1. golang中的select详解
  2. Sqlce与SQL Server2000/2005数据转换程序
  3. 使用WebDeployment Project改善VS2005发布网站问题 [系列导读]
  4. 集成学习——LightGBM原理理解
  5. matlab菜单的中文意思,matlab菜单制作
  6. Kubernetes集群安全:Api Server认证
  7. 关于两个JS对象指向一个属性
  8. Python Web 编程
  9. URLDecoder.decode()转义处理
  10. 【超级不爽】腾讯居然在我不知情未授权的情况下偷偷的转载我的博客文章
  11. Mysql - 聚簇索引和辅助索引
  12. 最后1天!生信入门转录组和可视化学习捷径
  13. 西电微电子考研初试经验贴
  14. 计算机图形学:向量运算(OpenGL)
  15. BeanCopier使用说明
  16. 2022安全员-B证考试题及在线模拟考试
  17. python关掉警告信息(warning)
  18. keymake中的内存注册机
  19. 怎样在新窗口中打开 jsp页面
  20. java实现手机短信验证的基本思路

热门文章

  1. 从view 得到图片
  2. VeriSign SSL证书apache安装
  3. 跨域请求设置withCredentials
  4. 怎样通过WireShark抓到的包分析出SIP流程图
  5. 专家系统中的推理机比较
  6. 前方车辆检测的常用方法
  7. 几款开源的数据挖掘工具
  8. Android Studio - HPROF文件查看和分析工具
  9. 【Linux系统编程】快速查找errno错误码信息
  10. Flask 教程 第十六章:全文搜索