项目需求刚刚递交,新需求还没来。闲下来了,写写博客放松下。

===========华丽的分割线=================

最近在学习Spring Cloud,其中消息总线Spring Cloud Bus是必不可少的,但是Spring Cloud Bus目前只支持RabbitMQ和kafka,因此学习RabbitMQ势在必行,今天先从最基本的安装开始。安装之前我们先认识下RabbitMQ。

一、初识RabbitMQ

百度百科有这么一句话:

MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,
而另一端则可以读取或者订阅队列中的消息。
MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,
而MQ则是遵循了AMQP协议的具体实现和产品。

他的官网中用大大的黑粗字体写着:

RabbitMQ is the most widely deployed open source message broker.

由此可见,RabbitMQ是一个消息中间件,生产者生成消息,消费者消费消息,它遵循AMQP(高级消息队列协议),是最广泛部署的开源消息代理。

另外,RabbitMQ是用Erlang语言实现的,它有几个概念:

    broker:消息队列服务器实体。
  exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
  queue:消息队列,每个消息都会被投入到一个或多个队列。
  binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
  routing Key:路由关键字,exchange根据这个关键字进行消息投递。
  vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
  producer:消息生产者,就是投递消息的程序。
  consumer:消息消费者,就是接受消息的程序。
  channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

消息队列的使用过程大概如下:

()客户端连接到消息队列服务器broker,打开一个channel。
()客户端声明一个exchange,并设置相关属性。
()客户端声明一个queue,并设置相关属性。
()客户端使用routing key,在exchange和queue之间建立好绑定关系。
()客户端投递消息到exchange。
()exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。

二、安装RabbitMQ(以Windows为例)

由于RabbitMQ是用Erlang语言编写的,因此需要先安装Erlang。

  1. 通过http://www.erlang.org/downloads获取对应安装文件进行安装
  2. 增加环境变量ERLANG_HOME=D:\Program Files\erl9.3(这里的目录是我的安装目录,你要换成自己的目录)
  3. 修改环境变量Path,在原来的值后面加上“;%ERLANG_HOME%\bin”

安装完Erlang之后,我们就可以安装RabbitMQ了。

  1. http://www.rabbitmq.com/install-windows-manual.html下载安装包进行安装
  2. 增加环境变量RABBITMQ_HOEM=D:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.5(这里的目录是我的安装目录,你要换成自己的目录)
  3. 修改环境变量Path,在原来的值后面加上“;%RABBITMQ_HOME%\sbin”

安装好之后,RabbitMQ就作为一个服务按照默认方式进行启动了

三、启动管理页面

我们可以通过Web进行管理RabbitMQ:

  1. 运行命令rabbitmq-plugins enable rabbitmq_management 开启Web管理插件
  2. 通过浏览器访问http://localhost:15672,并通过默认用户guest进行登录,密码也是guest,登录后的页面:页面中有我们前面提到的基本概念,比如channels/exchanges/queues等,可以逐个点进去看下详细情况。

    如果要添加新用户的话,点击Admin选项卡,进行添加,详细的不再叙述,相信大家一看就能懂。

就这样,RabbitMQ安装完毕。下一篇随笔将介绍下怎么通过Spring Boot整合RabbitMQ

最新文章

  1. 调用Child Package
  2. UITableViewController和XML解析还有地图的简单结合
  3. 对bootstrap中confirm alert进行封装
  4. 面试题HTML +CSS
  5. 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集
  6. php session 跨页失效问题
  7. 父类中“this” 指向问题
  8. Get Many Persimmon Trees_枚举&&二维树状数组
  9. Tutorial: Model
  10. btr_pcur_t
  11. live555源码研究(四)------UserAuthenticationDatabase类
  12. nyoj重建二叉树(不真的建立)
  13. jquery中的 ajax 以及map遍历
  14. debian安装jdk6
  15. ExtJS4.2 Ext.grid.panel Store更改后刷新表格
  16. leetcode第27题--Implement strStr()
  17. JAVA中String类的方法(函数)总结--JAVA基础
  18. Markdown 编辑器语法 专题
  19. 毕业设计(2):基于MicroPython的家庭可燃气体泄露微信报警器
  20. django虚拟环境安装

热门文章

  1. 推荐大家在GitHub 上值得关注学习的 iOS 开源项目
  2. 【64】Spring mvc详解
  3. Android群英传笔记——第三章:Android控件架构与自定义控件讲解
  4. jdk8中tomcat修改配置PermSize为MetaspaceSize
  5. linux设备驱动程序--类class的实现
  6. 【nginx】4xx,5xx 保持自定义header
  7. C# 合并多种格式文件为PDF
  8. 负载均衡之让nginx跑起来
  9. solr研磨之性能调优
  10. 转载 jQueryEasyUI Messager基本使用