RabbitMQ介绍
1.AMQP
1.1:AMQP协议简单介绍
- 全称是:Advanced Message Queuing Protocol(高级消息队列协议)
- 由摩根大通集团联合其他公司共同设计
- 是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准
- 为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制
- Erlang语言中的AMQP实现有RabbitMQ
1.2:AMQP协议模型
2.RabbtiMQ中各个概念详解
2.1:Broker
- 消息队列服务器实体
- 又称之为Server
2.2:Virtual Host
- 虚拟主机/虚拟地址
- 用于进行逻辑隔离
- 表示一批交换器、消息队列和相关对象
- Virtual Host是AMQP概念的基础,必须在连接时指定,RabbitMQ默认的vhost是 /
- 每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定和权限机制
2.3:Exchange
- 交换机
- 用来接收生产者发送的消息并根据消息的路由键和交换机的绑定的路由键将这些消息路由给服务器中的队列
- Exchenge有4中类型Direct(默认)、Fanout、Topic和Headers
- 不同类型的Exchange转发消息的策略有所有区别
2.4:Queue
- 队列
- 用来保存消息直到发送给消费者
- 一个消息可进入一个或多个队列
- 消息一直在队列里面,等待消费者连接到这个队列将其取走
2.5:Binngding
- 这个指的是交换机与队列的绑定
- 交换机与队列的绑定关系是多对多
- 可以绑定多次但路由键不能一样
- 绑定的时候要指定这个绑定关系的路由键
2.6:Routing Key
- 路由键
- 路由键实际上就是一个字符串
- 在绑定与消息里面里面都会有这个路由键
- 当交换机的类型为Direct的时候,如果消息的路由键与绑定的路由键一样那么就会把消息路由到相应的队列中
2.7:Message
- 消息
- 消息队列存储的数据
- 消息由Properties和Body(Payload)组成
2.8:Producer
- 消息的生产者
- 负责生产消息然后把消息发送到RabbitMQ的交换机上
- 交换机会自动根据消息的路由键以及交换机的类型和绑定发送到相应队列中
2.9:Consumer
- 消息的消费者
- 负责订阅队列
- 当被订阅的队列有消息的时候消息会把消息推送给消费者
3.RabbitMQ的特点
- 多种选择——RabbitMQ提供提供了多种功能让你在可靠性和性能之间做出权衡,这些功能包括(消息持久化,事务,发送应答,发布确认等等)。
- 支持多客户端——对主流开发语言(Python、Java、Ruby、PHP、C#、JavaScript、 Go、Elixir、Objective-C、Swift 等)都有客户端实现。
- 集群——集群模式十分丰富(HA模式 镜像队列模型)。
- 权限管理——通过用户与虚拟机实现权限管理。
- 插件系统——支持各种丰富的插件扩展,同时也支持自定义插件。
- 与Spring集成——Spring对AMQP进行了封装对于Java开发人员很友好
4.后续所有章节的参考链接
官网——https://www.rabbitmq.com/download.html
Erlang与RabbitMQ版本对应——https://www.rabbitmq.com/which-erlang.html
Docker hub——https://www.rabbitmq.com/download.html
Windows手动安装参考链接——https://www.rabbitmq.com/install-windows-manual.html
Windows高级安装方式参考链接——https://www.rabbitmq.com/install-windows.html
Debian和Ubuntu安装指南——https://www.rabbitmq.com/install-debian.html
基于RPM的Linux安装指南——https://www.rabbitmq.com/install-rpm.html
UNIX通用二进制安装指南——https://www.rabbitmq.com/install-generic-unix.html
rabbitmq.conf参考——https://www.rabbitmq.com/configure.html