快速了解本文:
目录
-
JMS是什么?
Java Message Service,一套处理消息的规范
Message:消息,通俗来讲,是指要做的事情
-
ActiveMQ是什么?
-
是一种JMS Provider,其他开源JMS供应商还有RabbitMQ、RocketMQ
-
ActiveMQ是一种消息队列技术
Active是活跃的意思,MQ是Message Queue,即消息队列,说通俗点,这个技术能同时处理很多个消息,能同时干很多 事
-
ActiveMQ主要应用场景有哪些?
-
大型电商网站,如淘宝、京东,同时有几亿用户在下单
-
12306,同时几亿人在购买火车票
-
其他在同一时间会有很多请求的场景
这些场景有一个共同的特点:高并发
并发是同时发生的意思,高并发就是高度密集的同时发生,通俗点,就是同时有大量的请求发往服务器,ActiveMQ就是为解决高并发问题而生!
-
在企业开发中不使用ActiveMQ会怎么样?
- 即便不使用ActiveMQ,也会使用类似的技术,比如RabbitMQ、RocketMQ
- 主流程卡顿,甚至服务器宕机,用户体验很差,甚至用不了
- 系统耦合性太强,不利于系统迁移和维护
-
ActiveMQ采用什么模型?
生产者消费者模型(生产者和消费者可以跨平台、跨系统)
-
ActiveMQ支持哪两种消息传输方式?
1、Queue,队列模式,生产者生产了一个消息,只能由一个消费者进行消费
2、Topic,发布/订阅模式,生产者生产了一个消息,可以由多个消费者进行消费
-
使用消息队列的好处
消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有这深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度。
在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧。
在使用队列后,用户的请求发给队列后立即返回(当然不能直接给用户提示订单提交成功,京东上提示:您“您提交了订单,请等待系统确认”),再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。由于消息队列的服务处理速度远快于数据库,因此用户的响应延迟可得到有效改善。
1、系统整合:同构/异构系统整合,分布式环境中
2、降低模块间耦合:比如AB两个系统,A性能瓶颈或宕机、
系统差不干扰B
3、实现异步:1.推消息 2.削峰请求
4、数据同步:web应用->缓存,搜索,db