概述

生产者生产数据至 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. Python学习笔记--序列
  2. MDT2008部署之三LTI部署之二
  3. QT中播放音乐遇到的问题合集
  4. 【数据竞赛】DoubleEnsemble--专治硬样本的神奇集成技术。
  5. 数据包通过分层模型实现通信的过程
  6. 浅析Linux awk命令
  7. Codeforces 724 C. Ray Tracing
  8. 让vs2008支持jQuery的智能提示!
  9. [html] 对于写一个页面布局,html/css/js这三者你是先写哪个后写哪个?
  10. 局域网抢答器_基于童芯派的抢答器V1.0
  11. (十一)深入浅出TCPIP之TCP粘包问题
  12. 35 【kubernetes】configMap
  13. 洛谷 3373 【模板】线段树 2
  14. 面试要10K,HR说你只值7K,怎么斗得过?
  15. 纯CSS在线气泡提示生成工具 - CSS ARROW PLEASE!
  16. 信息系统项目管理--论文分析笔记
  17. OC语言基础十:OC文件操作
  18. 上海企业英语培训机构排名
  19. python股票回测_Python量化投资框架:回测+模拟+实盘
  20. opencv+QT+vs 中显示图片总结

热门文章

  1. 在vue2.x项目中怎么引入Element UI
  2. 3ds Max绘制青花瓷茶壶
  3. contain_of宏定义
  4. asp遍历前端的所有控件
  5. 作业二:了解流行的软件
  6. POJ1269:Intersecting Lines(判断两条直线的关系)
  7. 一个指针的引用引发的血案
  8. web developer tips (8):创建web用户控件并包含在web页面里
  9. 聊聊IO多路复用之select、poll、epoll详解
  10. DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解