本文开始进入正文前,我们需要先弄清楚一些基础知识,须知而后用。
1.消息队列(MQ)是啥?
1)消息队列是一种跨进程的通信机制,具有单向传递、单向依赖和异步处理的特性,主要解决多个系统间的消息异步、业务解耦、流量削峰等问题。
2)消息队列从字面上意思是Message+Queue。Message是信息载体,特征是携带的消息通常具有“可消费”性质;Queue是一个单向通道,特征是先进先出。
举个“快递服务”的例子,理解一下消息队列的概念:
快递服务就是一种消息队列MQ,卖家是生产者,买家是消费者,快递包裹是Message,运输线路是Queue。
快递服务(消息队列)的好处:
1)异步处理。生产者制造的商品,快递不需要实时被签收,消费者可以空闲的时候再取件。
2)业务解耦。生产者只关心自己完成订单,不关心卖给了谁;消费者只关心拿到商品,不关系是谁生产的。
3)流量削峰。当促销季,消费者购买的商品太多,快递服务可以提供的仓储功能,可以起到缓冲效果。
快递服务(消息队列)的不足:
1)可用性降低。快递服务一旦瘫痪,商品消费业务就无法进行。
2)业务复杂化增加。商品消费业务,原本是生产者与消费者两者之间的关系,现在有增加了第三方快递服务公司,完成一个商品消费业务复杂化增加。
3)可能一致性问题。生产者通过快递服务发完货就完成了自身的业务,默认商品消费已经成功,但如果消费者对部分商品不满意,拒绝签收所有物品,那么实际上商品消费失败,生产者和消费者双方的数据就会不一致。
2.使用MQ实现异步调用
下文结合Spring Boot,使用Rab