在SpringBoot高级篇学习笔记(四、缓存与消息)笔记中已经使用过了RabbitMQ(点进去直接搜索RabbitMQ即可),这里主要是补之前一些概念性的理论,操作比较少。
MQ简介
MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据机构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。
主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。
不同的MQ的特点:
使用场景
- 流量削峰
- 日志处理
- 应用解耦
- 异步处理
RabbitMQ简介
RabbitMQ官网:https://www.rabbitmq.com/
RabbitMQ用Erlang语言编写的,实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),是部署最广泛的开源消息中间件,是最受欢迎的开源消息中间件之一。
优点:
性能很好,延时低。
吞吐量到万级,功能完备。
有良好的管理界面管理工具。
社区相对比较活跃。
缺点:
相对kafka吞吐量低。
AMQP协议
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
使用docker安装RabbitMQ
Docker基础入门学习笔记
在linux的docker里拉取RabbitMQ镜像docker pull rabbitmq:3.8.3-management
(management是带web的管理界面)。
5672是客户端和RabbitMQ进行通信的端口。
15672是管理界面访问web页面的端口。
运行RabbitMQ
docker run -d -p 5672:5672 -p 15672:15672 --name myRabbitMQ 容器id
RabbitMQ管理界面的使用
在浏览器中输入http://10.211.55.17:15672/
访问RabbitMQ的管理页面。(10.211.55.17是我linux的IP地址)
用户名和密码默认guest。
创建用户并绑定虚拟主机
创建ems用户
创建虚拟主机
绑定虚拟主机
RabbitMQ消息种类
官方支持7种消息种类:https://www.rabbitmq.com/getstarted.html