1、安装RabbitMQhtml
安装直接用docker安装,若是手动安装的话比较繁琐,还要安装erlang语言的环境。在安装有docker机器上执行官网提供的指令(https://www.rabbitmq.com/download.html):docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-managementweb

安装好以后 浏览器访问15672端口,能够看到web管理端。默认的是用户名密码都是guestdocker

2、AMQP协议(Advanced message queue protocol 高级消息队列协议)核心概念和RabbitMQ总体架构浏览器
RabbitMQ是经过Erlang语言基于AMQP协议开发的。erlang语言经常使用于交换机上,由于它的高效,天然rabbitMQ也很高效了。安全
AMQP模型描述了一套模块化的组件以及这些组件之间进行链接的标准规则,核心概念:
server:服务,又称broker,接受客户端链接,对外提供amqp实体服务
connection:链接,客户端与server的链接
channel:网络通道,几乎全部的操做都是在channel中进行的,是进行消息对象的通道,客户端能够创建多个通道,每个channel表示一个会话任务
virtual host:虚拟主机,是一个逻辑上的概念,一个虚拟主机中能够包含多个exhange 和 message queue可是一个虚拟主机中不能有名称相同的exchange 和 message queue
exchange:接收发布应用程序发送的消息,并根据必定的规则将这些消息路由到消息队列
message queue:消息队列,存储消息,直到这些消息被消费者安全处理完为止
binding:定义了exchange和message queue之间的关联,提供路由规则,包含route_key
route_key:路由key ,做用是在交换机上经过route_key来把消息路由到某个队列上
RabbitMQ总体架构:
这些概念在rabbitMQ的web控制台均可以看见:网络

3、交换机详解
1.交换机属性:
name:交换机名字
type:类型:direct,topic,fanout,headers
durability:是否须要持久化
autodelete: 假如没有队列绑定到该交换机,那么该交换机会自动删除
Internal: 当前交换机是否用户rabbitmq内部使用不经常使用,默认为false
argurements: 扩展参数,用户扩展AMQP定制化协议
2.直连交换机:direct exchange 消息投递时的key与队列绑定routekey彻底相同的队列上面
3.主题交换机:topic exchange 投递消息是能够进行key的匹配,#匹配多个单词,*匹配一个单词(用.隔开),好比队列A绑定的routekey:study.#。投递消息时设置的routekey.abc或者routekey.abc.def均可以投递到队列A上面;队列B设置的routekey:study.*,那么就只有routekey.abc能够投递到队列B
4.扇形交换机: fanout exchange 不会进行routekey的匹配,只要是该交换机的队列都会被投递。由于不会进行路由字符串的匹配,因此这种交换的消息投递是最快的
5.头部交换机:headers exchange 投递的消息头里面有一个特殊的key:“x-match”,有两个值:all(默认),发送消息的header里面的全部key都对应,才投递;any,任意一个对应就投递