1.应用场景

1.1异步处理

案例:用户注册成功后,给该用户发送邮件和短信提醒其注册成功
采用消息队列后可以增强用户体验,让用户更快地得到响应。
image.png

1.2应用解耦

当用户下单后要对库存系统进行一系列增删改查操作。传统方式的话耦合性太高。
image.png

1.3流量削峰

案例:10万人秒杀1万个奖品。
这里就可以创建一个1万个座位的消息队列,开始活动时,当这一万个座位已经抢完后,剩下的9万人再点击秒杀按钮的时候立马返回秒杀失败谢谢参与的提醒,而占到座位的那1万个客户再由队列慢慢处理消化。
image.png

2.两种通讯机制

2.1点对点式

消息发送者发送消息,消息代理将其放入-一个队列中,消息接收者从队列中获取消息内容,
消息读取后被移出队列 。消息只有唯一的发送者和接受者,但并不是说只能有一个接收者

2.2发布订阅式

发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么
就会在消息到达时同时收到消息

3.两种消息规范

3.1 JMS

java消息服务,基于JVM消息代理的规范。
ActiveMQ、 HornetMQ是JMS实现

3.2 AMQP

高级消息队列协议,也是-个消息代理的规范,兼容JMS.。
RabbitMQ是AMQP的实现

3.3两者对比

image.png