ActiveMQ是什么,为什么使用MQ
是基于 Java 中的 JMS 消息服务规范实现的一个消息中间件。
1.系统解耦
采用中间件之后,就可以完美解决上述中因为耦合可能导致的问题。系统 A 不用去
关心下层服务调用方的问题。
2. 异步调用
当一个请求处理需要经过 3 个系统的时候,A 和 B 系统处理时间 3ms 时间,这个是非
常快的,但是 C 系统可能需要 30s 才能处理完。这样整个业务处理时间因为 C 系统导
致非常慢。
比如我们在美团或者饿了吗下单,那么在下单的时候,后台需要通过后台处理:订单支
付->账户扣款->创建订单->通知商家准备菜品->安排骑手
这个时候我们对于扣款和创建订单来讲对于时效性要求强,处理效率也比较高。对于通
知商家准备菜品和安排骑手来讲时效性的要求不是很高,处理时间也可能会稍长。这个
时候就可以使用 mq 进行异步处理,先处理完前面的业务,然后反馈给用户,之后再通
过 mq 处理通知商家准备菜品和安排骑手
3.流量削峰
大部分时候,每秒几百请求,一台机器就足够了,但是为了抗那每天瞬时的高峰,硬是
部署了 10 台机器,每天就那半个小时有用,别的时候都是浪费资源的。
但是如果你就部署一台机器,那会导致瞬时高峰时,一下子压垮你的系统,因为绝对无
法抗住每秒几千的请求高峰。此时我们就可以用 MQ 中间件来进行流量削峰
所有机器前面部署一层 MQ,平时每秒几百请求大家都可以轻松接收消息。一旦到了瞬
时高峰期,一下涌入每秒几千的请求,就可以积压在 MQ 里面,然后那一台机器慢慢
的处理和消费。等高峰期过了,再消费一段时间,MQ 里积压的数据就消费完毕了。