一、概述
RabbitMQ(Message Queue)是当前流行的开源的消息队列系统,用ERLang语言开发,按照AMQP(Advanced Message Queue Protocol)的标准实现,消息队列是一种应用程序对应用程序之间的通信方法,应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,则无需专用链接来链接它们,RabbitMQ便是这样一种用于应用程序之间通信的中间件。
二、架构
RabbitMQ的架构图如下:
图-1
在此有几个概念需要说明一下:
1、Exchange:消息交换机,它指定消息按照什么规则,路由至哪个队列。
2、Queue:消息队列载体,每个消息都会被投入到一个或者多个队列中。
3、Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
4、Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
5、vhost:虚拟主机,一个broker里面可以开设多个vhost,用作不同用户的权限分离。
6、producer:消息生产者,就是投递消息的程序。
7、consumer:消息消费者,就是接受消息的程序。
8、channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
9、Broker:简单来说就是消息队列服务器实体。
消息投递过程大致如下:
1>客户端连接到消息队列服务器,打开一个channel。
2>客户端声明一个exchange,并设置相关属性。
3>客户端声明一个queue,并设置相关属性。
4>客户端使用routing key,在exchange和queue之间建立绑定好关系。
5>客户端投递消息到exchange。
6>exchange接收到消息后,根据消息的key和已经设置好的binding,进行消息路由,将消息投递到一个或者多个队列里。
RabbitMQ几个特性:
1、exchange支持多种类型,有fanout、direct、topic、header等,每种类型的都有自己不同的使用场景和性能。
2、RabbitMQ支持消息的持久化,也就是数据写在磁盘上,为了数据的安全,我想大多数用户都选择持久化,消息队列持久化包括3个部分:
》exchange持久化,在声明时指定durable=>1
》queue持久化,在声明时指定durable=>1
》消息持久化,在投递时指定delivery_mode=>2(此处1是非持久化)
注意:如果exchange和queue都是持久化的,那么它们之间的binding也是持久化的,如果exchange和queue两者之间有一个持久化,一个非持久化,就不允许建立绑定。
三、安装
基于windows 32位操作系统的安装部署:
1、下载ERLang。(百度其官网)
2、安装ERLange,运行下载的安装程序即可,默认安装。
3、安装完成之后,设置ERLang的环境变量,首先建立一个ERL_HOME的变量,如下图所示:
图-2
4、下载rabbitmq-server-3.1.5.exe,并安装.(百度其官网)
5、启动rabbitma-start开启rabbit-server服务,启动过程【开始】--->【程序】--->【RabbitMQ Server】--->【RabbitMQ Service - start】,此时rabbitMQ-server就启动了。
基于Linux的安装部署(略)
RabbitMQ (消息队列)专题学习01 RabbitMQ部署