1.应用场景
1.1异步处理
案例:用户注册成功后,给该用户发送邮件和短信提醒其注册成功
采用消息队列后可以增强用户体验,让用户更快地得到响应。
1.2应用解耦
当用户下单后要对库存系统进行一系列增删改查操作。传统方式的话耦合性太高。
1.3流量削峰
案例:10万人秒杀1万个奖品。
这里就可以创建一个1万个座位的消息队列,开始活动时,当这一万个座位已经抢完后,剩下的9万人再点击秒杀按钮的时候立马返回秒杀失败谢谢参与的提醒,而占到座位的那1万个客户再由队列慢慢处理消化。
2.两种通讯机制
2.1点对点式
消息发送者发送消息,消息代理将其放入-一个队列中,消息接收者从队列中获取消息内容,
消息读取后被移出队列
。消息只有唯一的发送者和接受者,但并不是说只能有一个接收者
2.2发布订阅式
发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么
就会在消息到达时同时收到消息
3.两种消息规范
3.1 JMS
java消息服务,基于JVM消息代理的规范。
ActiveMQ、 HornetMQ是JMS实现
3.2 AMQP
高级消息队列协议,也是-个消息代理的规范,兼容JMS.。
RabbitMQ是AMQP的实现