消息队列
jms 即Java消息服务(Java Message Service) 只能用于java语言和java平台
amqp 即Advanced Message Queuing Protocol
RabbitMQ就是amqp的实现
消息队列用于异步处理时,能够缩短用户的等待时间,因为有的操作可以不直接执行,比如:一名用户发送注册信息,需要将注册信息传入数据库,发送注册邮件,发送注册短信 。
level1:依次执行,花费时间最长
level2:并发执行,将发送邮件和发送短信同步执行
level3:使用消息队列,只需要先执行第一步然后将后面两个动作加入消息队列中,即可向用户做出响应,后两步通过异步读取来执行操作
还能用于应用解耦和流量削峰
基本模型:
整合RabbitMQ
1.用Docker在虚拟机中安装RabbitMQ
docker pull registry.docker-cn.com/library/rabbitmq:3-management
3-management代表拥有客户端
2.运行RabbitMQ
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 镜像id
-d 后台运行 -p 暴露端口 5672是客户端和rabbitmq通信的端口、15672是管理界面访问web页面的端口、–name 起别名
3.查看进程
docker ps
访问RabbitMQ:虚拟机ip:15672
username:guest password:guest (默认的用户名和密码)
在网页上登录管理界面,能够添加节点
direct:单点exchange
fanout:广播exchange
topic:匹配exchange,#能匹配0个或多个,*能匹配一个
Spring Boot和rabbitmq整合
用Spring Boot初始化向导,引入web和integration的rabbitmq
在application.properties中配置
spring.rabbimq.host=ip地址
spring.rabbimq.host=guest
spring.rabbimq.host=guest
自动配置:
- RabbitAutoConfiguration
- 有自动配置了连接工厂ConnectionFactory
- RabbitProperties封装了RabbitMQ的配置
- RabbitTemplate:给RabbitMQ发送和接收消息
- AmqpAdmin:RabbitMQ系统管理功能组件
- @EnableRabbit和@RabbitListener 监听消息队列中的内容
@EnableRabbit //开启基于注解的RabbitMQ模式
AmqpAdmin能够创建和删除exchange或者queue