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使用实践相关推荐

  1. 消息代理 - RabbitMQ - 学习/实践

    1.应用场景 用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗. 2.学习/操作 1. 文档 Messaging that just works - RabbitMQ // 官 ...

  2. 使用.NET Core 2.1,RabbitMQ,SignalR,EF Core 2.1和Angular 6开发微服务

    目录 介绍 单一软件 微服务架构 微服务设计与规划 示例应用程序 示例应用程序的微服务 微服务进程间通信 微服务与消息队列之间的消息传递 RabbitMQ消息代理 消息队列体系结构目标和决策 帐户管理 ...

  3. 2.RabbitMQ 的可靠性消息的发送

      本篇包含 1. RabbitMQ 的可靠性消息的发送 2. RabbitMQ 集群的原理与高可用架构的搭建 3. RabbitMQ 的实践经验   上篇包含 1.MQ 的本质,MQ 的作用 2.R ...

  4. 【2021最新版】RabbitMQ面试题总结(32道题含答案解析)

    文章目录 1.什么是rabbitmq? 2.为什么要使用rabbitmq? 3.使用rabbitmq的场景. 4.如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息? 5.如何避免 ...

  5. RabbitMQ优秀博文整理

    1.关于主流MQ的介绍,各MQ的优缺点.MQ的使用选举等 MQ消息队列详解.四大MQ的优缺点分析_从百草园杀到三味书屋&的博客-CSDN博客_几种消息队列的优缺点 2.RabbitMQ常见问题 ...

  6. 面试官:哥们,你们的系统架构中为什么要引入消息中间件?

    点击上方"蓝字", 右上角选择"设为星标" 周一至五早11点半!精品文章准时送上! 本文来自石杉的架构笔记 这篇文章开始,我们把消息中间件这块高频的面试题给大家 ...

  7. 为什么一定要用MQ中间件

    这篇文章我们会把消息中间件这块高频的面试问题来给大家说一下,也会涵盖一些 MQ 中间件常见的技术问题. 假如说面试官看你简历里写了 MQ 中间件的使用经验,很可能会有如下的问题: 你们公司生产环境用的 ...

  8. 【金三银四】Java中间件面试题(2021最新版)

    目录 前言 Zookeeper 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3.Zookeeper 文件系统 4. ZAB 协议? 5. 四种类型的数据节点 Znode ...

  9. 宝哥面试题分享(07): Java中间件面试题

    Java中间件面试题 001什么是Nginx? Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理.负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中 ...

  10. 面试题:消息队列面试连环炮

    目录: 你使用过消息中间件吗? 你们为什么使用消息中间件? 消息队列有什么好处? 什么场景下使用的?用来干了个什么的事情? 系统中引入消息队列之后会不会有什么坏处? 你们使用哪一个消息中间件?为什么选 ...

最新文章

  1. 华为主题包hwt下载_华为手机非官方主题应用指南
  2. dns短域名会引起nslookup解析总解析到一个IP
  3. 大家一起来《六顶思考帽》
  4. 第二届「星斗奖」获奖名单正式公布
  5. CVPR 2018 FlowTrack:《End-to-end Flow Correlation Tracking with Spatial-temporal Attention》论文笔记
  6. 【uni-app】变量绑定/拼URL
  7. Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
  8. hive求差集和交集
  9. BetterZip使用教程分享:Mac用户如何提取压缩文件?
  10. 通过延迟加载和代码拆分提高网站性能
  11. 菜鸟谈算法和数学对写程序的影响
  12. 年底各类大型年会晚会必用的高清丝绸海报设计背景来喽!
  13. javascript - return
  14. 搭载敏捷飞天底座 阿里云专有云敏捷版全面升级 | 凌云时刻
  15. 计算机病毒的特点五笔怎么打,电脑有极品五笔的朋友,特别是WIN7的,请删除这个输入法,有病毒...
  16. 【VHDL】分频器设计要求:25分频,占空比为50%
  17. Android 仿微信/支付宝 字体大小 调整控件
  18. gmail 设置 smtp_如何在Linux上使用Gmail或SMTP设置电子邮件警报
  19. 王老吉为何败给加多宝?
  20. AWS实例修改时区及数据库实例修改时区

热门文章

  1. java 阴阳历,java阳历转换成阴历
  2. k8s calico 插件错误:Calico node 'node4' is already using the IPv4 address 172.19.0.1.
  3. 已知三边求三角形夹角度数
  4. NTP时钟源(GPS时间源)介绍与分析
  5. 外卖行业现状分析_2020年中国外卖行业市场现状与发展前景分析
  6. ubuntu安装中的小tips
  7. 纺织服装外贸行业解决方案丨汇信外贸软件
  8. Unity基础案例讲解:创建小型太空射击游戏(二)
  9. POJ - 3258 River Hopscotch 二分
  10. 带你了解计算机网络的背景和框架