1、简介

  RabbitMQ是消息代理:它接受和转发消息。你可以把它当作一个邮局:当你把你要邮寄的邮件放在信箱里时,你可以肯定Postman先生最终会把邮件送到你的收件人那里。在这个比喻中,RabbitMQ是邮局,邮局邮差。RabbitMQ和邮局之间的主要区别是,它不处理纸张,而是接受、存储和转发二进制数据‒消息。

  整体的设计如下图:

  

  java环境下,使用rabbitmq需要用到jar包:amqp-client.jar

2、发送消息

  想要将消息发送到队列中,我们需要进行下面几步:

  (1)建立服务链接

1 ConnectionFactory factory = new ConnectionFactory();
2 factory.setHost("localhost");                // 设置ip地址
3 factory.setPort(5672);                         // rabbit的端口号,默认为5672,可以不写
4 factory.setPassword("rabbit");             // 发送消息用户的登录密码
5 factory.setUsername("rabbit");           // 发送消息用户的登录用户名
6 Connection connection = factory.newConnection();        // 新建链接
7 Channel channel = connection.createChannel();            // 创建channel

  (2)声明消息队列

1 channel.queueDeclare("QUEUE_NAME", false, false, false, null);

  (3)调用方法发送消息

1 String message = "Hello World!";                    // 待发送的消息
2 channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

  (4)发送消息过后,需要关闭链接

1 channel.close();
2 connection.close();

3、接收消息

  接下来,当生产者将消息发送到队列之后,我们消费者一方就可以从队列中接收到消息了:

  (1)建立服务器链接,和生产者一方一样

1 ConnectionFactory factory = new ConnectionFactory();
2 factory.setHost("localhost");                // 设置ip地址
3 factory.setPort(5672);                         // rabbit的端口号,默认为5672,可以不写
4 factory.setPassword("rabbit");             // 发送消息用户的登录密码
5 factory.setUsername("rabbit");           // 发送消息用户的登录用户名
6 Connection connection = factory.newConnection();        // 新建链接
7 Channel channel = connection.createChannel();            // 创建channel

  (2)声明消息队列

1 channel.queueDeclare("QUEUE_NAME", false, false, false, null);

  (3)声明回调方法,接收服务器从队列中发过来的消息

 1 Consumer consumer = new DefaultConsumer(channel) {
 2   @Override
 3   public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
 6     String message = new String(body, "UTF-8");
 7     System.out.println(" [x] Received '" + message + "'");
 8   }
 9 };
10 channel.basicConsume(QUEUE_NAME, true, consumer);

    

4、运行查看结果

  分别运行生产者方和消费者方的代码过后,通过生产者方发送消息过后,就可以在消费者方接收到发送过来的数据了。

转载于:https://www.cnblogs.com/origalom/p/8331346.html

Rabbitmq消息队列(二) Hello World! 模拟简单发送接收相关推荐

  1. RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列

    上一篇已经讲了Rabbitmq如何在Windows平台安装,不懂请移步:RabbitMQ学习系列一:windows下安装RabbitMQ服务 一.理论: .net环境下,C#代码调用RabbitMQ消 ...

  2. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

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

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

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

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

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

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

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

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

  7. RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)

    在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成.那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会 ...

  8. 使用EasyNetQ组件操作RabbitMQ消息队列服务

    RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...

  9. 初探 RabbitMQ 消息队列

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

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

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

最新文章

  1. Ajax简单示例之改变下拉框动态生成表格
  2. linux关闭防火墙stop,linux如何关闭防火墙
  3. DC使用教程系列1-.synopsys.dc.setup的建立
  4. Python Django 获取多条记录API
  5. Android隐藏状态栏、导航栏
  6. 卡通角色表情驱动系列二
  7. 属性“dataProvider”有多个初始值设定项。(注意:“dataProvider”是“mx.charts.BarChart”的默认属性)。...
  8. python继承属性_Python中的属性继承问题
  9. SQLMAP参数中文解说
  10. 从浏览器输入地址到渲染出网页这个过程发生了什么?
  11. Elasticsearch 参考指南(引导检查)
  12. c# 链接mongDB集群实战开发2
  13. SolidWorks结构件铝型材无法对齐
  14. Tomcat发布项目时,更改浏览器地址栏图标
  15. 经济应用文写作【9】
  16. 谷露猎头系统3.0新功能:Mapping模块,助你轻松画出动态组织架构图
  17. 开水果店前期投入,水果店会有哪些费用
  18. 洛谷 #2197. Nim游戏
  19. 职业生涯规划计算机专业中职生3000字,计算机专业职业生涯规划书范文格式3000字...
  20. 聊一聊 MYSQL 数据的真删和假删

热门文章

  1. 给定(x,y)填充数据,前端怎么实现?
  2. python如何用requests传送json格式数据
  3. detectron2注册数据集
  4. 对‘cv::imread(cv::String const, int)’未定义的引用
  5. UserWarning: Error checking compiler version for cl
  6. 基于Python的卷积神经网络和特征提取(Theano)
  7. R-CNN学习笔记3:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
  8. 如何手动优化机器学习模型超参数
  9. django(一)——在PyCharm下搭建开发环境
  10. Executors 工具类,三大方法