RabbitMQ使用实践
参考网站:
http://blog.chinaunix.net/topic/surpershi/
http://blog.csdn.net/lwkcn/article/details/25086467
http://snoopyxdy.blog.163.com/blog/static/60117440201352615631930/
1、简介
MQ(Message Queue)消息队列,用于应用系统解耦、消息异步分发。
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。
其优点如下。
1)Reliability-可靠性高。
2)Flexible Routing-路由灵活。
3)Clustering-支持集群。
4)Federation-支持互联。
5)Tracing-便于追踪。
本文档是关于RabbitMQ的安装与使用实践。
实践环境:Window7 x64系统。
2、Erlang安装
RabbitMQ由ERLANG实现,故需要安装Erlang。
1)下载Erlang
下载官网:http://www.erlang.org/download.html。
实践安装版本:otp_win32_17.4.exe。
2)安装Erlang
运行Exe按照提示一路Next安装下来。
3)配置Erlang
本机安装目录:C:\Program Files (x86)\erl6.3。
环境变量Path中添加C:\Program Files (x86)\erl6.3\bin。
4)检测Erlang
命令行中输入erl命令可检测Erlang是否安装成功。
3、RabbitMQ安装
对应RabbitMQ的版本为V3.4.3。
1)下载RabbitMQ
对应官网: http://www.rabbitmq.com/download.html。
下载安装包:rabbitmq-server-3.4.3.exe。
2)安装RabbitMQ
运行Exe,一路Next安装完毕。
3)安装完成查看
4、RabbitMQ启动
1)启动管理插件
运行RabbitMQ Command Prompt(sbin dir)。
输入rabbitmq-plugins enable rabbitmq_management,启动管理插件。
2)启动管理服务
运行RabbitMQ Service - start。
3)登录管理界面
浏览器输入:http://localhost:15672/#/。
用户名:guest,密码guest。
5、消息发送代码
示例代码采用Java,对应IDE为Eclipse。
Java需要用到RabbitMQ的jar包。
jar包下载地址:http://www.rabbitmq.com/java-client.html。
对应版本与Rabbit Server一致V3.4.3。
发送代码见Send.java。
import java.io.IOException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; public class Send { private final static String QUEUE_NAME = "rabbit";public static void main(String[] args) throws IOException { ConnectionFactory factory = new ConnectionFactory();factory.setHost("127.0.0.1");factory.setPort(5672);factory.setUsername("guest");factory.setPassword("guest");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello Rabbit!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'");channel.close(); connection.close(); }
}
运行结束结果。
打印出: [x] Sent 'Hello Rabbit!'。
进入管理界面,可以看到已经创建了一个名叫rabbit的消息队列,,消息Ready标志为1。
6、消息接受代码
对应程序代码Recv.java。
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer; public class Reqv { private final static String QUEUE_NAME = "rabbit";public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");factory.setPort(5672);factory.setUsername("guest");factory.setPassword("guest");Connection connection = factory.newConnection(); Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);QueueingConsumer consumer = new QueueingConsumer(channel); channel.basicConsume(QUEUE_NAME, true, consumer);while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println(" [x] Received '" + message + "'"); } }
}
运行结果,打印如下。
[x] Received 'Hello Rabbit!'
进入管理端界面查看,消息Ready标志为0。
7、总结
通过实践,感觉RabbitMQ简单易用,支持消息的异步发送,可以解耦两个强关联的应用系统。
RabbitMQ使用实践相关推荐
- 消息代理 - RabbitMQ - 学习/实践
1.应用场景 用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗. 2.学习/操作 1. 文档 Messaging that just works - RabbitMQ // 官 ...
- 使用.NET Core 2.1,RabbitMQ,SignalR,EF Core 2.1和Angular 6开发微服务
目录 介绍 单一软件 微服务架构 微服务设计与规划 示例应用程序 示例应用程序的微服务 微服务进程间通信 微服务与消息队列之间的消息传递 RabbitMQ消息代理 消息队列体系结构目标和决策 帐户管理 ...
- 2.RabbitMQ 的可靠性消息的发送
本篇包含 1. RabbitMQ 的可靠性消息的发送 2. RabbitMQ 集群的原理与高可用架构的搭建 3. RabbitMQ 的实践经验 上篇包含 1.MQ 的本质,MQ 的作用 2.R ...
- 【2021最新版】RabbitMQ面试题总结(32道题含答案解析)
文章目录 1.什么是rabbitmq? 2.为什么要使用rabbitmq? 3.使用rabbitmq的场景. 4.如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息? 5.如何避免 ...
- RabbitMQ优秀博文整理
1.关于主流MQ的介绍,各MQ的优缺点.MQ的使用选举等 MQ消息队列详解.四大MQ的优缺点分析_从百草园杀到三味书屋&的博客-CSDN博客_几种消息队列的优缺点 2.RabbitMQ常见问题 ...
- 面试官:哥们,你们的系统架构中为什么要引入消息中间件?
点击上方"蓝字", 右上角选择"设为星标" 周一至五早11点半!精品文章准时送上! 本文来自石杉的架构笔记 这篇文章开始,我们把消息中间件这块高频的面试题给大家 ...
- 为什么一定要用MQ中间件
这篇文章我们会把消息中间件这块高频的面试问题来给大家说一下,也会涵盖一些 MQ 中间件常见的技术问题. 假如说面试官看你简历里写了 MQ 中间件的使用经验,很可能会有如下的问题: 你们公司生产环境用的 ...
- 【金三银四】Java中间件面试题(2021最新版)
目录 前言 Zookeeper 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3.Zookeeper 文件系统 4. ZAB 协议? 5. 四种类型的数据节点 Znode ...
- 宝哥面试题分享(07): Java中间件面试题
Java中间件面试题 001什么是Nginx? Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理.负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中 ...
- 面试题:消息队列面试连环炮
目录: 你使用过消息中间件吗? 你们为什么使用消息中间件? 消息队列有什么好处? 什么场景下使用的?用来干了个什么的事情? 系统中引入消息队列之后会不会有什么坏处? 你们使用哪一个消息中间件?为什么选 ...
最新文章
- 华为主题包hwt下载_华为手机非官方主题应用指南
- dns短域名会引起nslookup解析总解析到一个IP
- 大家一起来《六顶思考帽》
- 第二届「星斗奖」获奖名单正式公布
- CVPR 2018 FlowTrack:《End-to-end Flow Correlation Tracking with Spatial-temporal Attention》论文笔记
- 【uni-app】变量绑定/拼URL
- Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
- hive求差集和交集
- BetterZip使用教程分享:Mac用户如何提取压缩文件?
- 通过延迟加载和代码拆分提高网站性能
- 菜鸟谈算法和数学对写程序的影响
- 年底各类大型年会晚会必用的高清丝绸海报设计背景来喽!
- javascript - return
- 搭载敏捷飞天底座 阿里云专有云敏捷版全面升级 | 凌云时刻
- 计算机病毒的特点五笔怎么打,电脑有极品五笔的朋友,特别是WIN7的,请删除这个输入法,有病毒...
- 【VHDL】分频器设计要求:25分频,占空比为50%
- Android 仿微信/支付宝 字体大小 调整控件
- gmail 设置 smtp_如何在Linux上使用Gmail或SMTP设置电子邮件警报
- 王老吉为何败给加多宝?
- AWS实例修改时区及数据库实例修改时区
热门文章
- java 阴阳历,java阳历转换成阴历
- k8s calico 插件错误:Calico node 'node4' is already using the IPv4 address 172.19.0.1.
- 已知三边求三角形夹角度数
- NTP时钟源(GPS时间源)介绍与分析
- 外卖行业现状分析_2020年中国外卖行业市场现状与发展前景分析
- ubuntu安装中的小tips
- 纺织服装外贸行业解决方案丨汇信外贸软件
- Unity基础案例讲解:创建小型太空射击游戏(二)
- POJ - 3258 River Hopscotch 二分
- 带你了解计算机网络的背景和框架