先说一下应用场景:
邮箱注册时给用户发送一封注册成功的邮件,手机注册给用户发送一条短信验证码
用户登录时将用户的登录时间、ip地址、使用的手机信息等一大堆个人特征信息保存起来,以后用于大数据分析
特别重的业务场景下,比如电商平台,用户购买商品成功后,系统给用户要建立发货信息等。
聊天场景,A发给B的消息,用MQ先暂存起来
秒杀业务,为了防止出现超卖,将请求放入MQ,来进行顺序话处理
总结一下,用MQ的原则是:
不要求特别高的实时性,允许慢慢的处理(一般情况下也不至于太慢)
耗用资源比较多,不适合放入主线程。比如发送邮件或者短信验证码,因为要连接第三方服务器(短信运营商或者邮箱运营商),资源耗用和时间耗用都比较高
削峰。大并发场景下,比如秒杀等活动中,适合削一下峰处理流量,扔到MQ里慢慢处理
一般不关注处理结果。因为通过MQ处理后,业务就从同步变成了异步,一般情况下,异步化以后,再去关注处理结果将变的特别复杂,所以不关注处理结果,一般也就成了MQ的使用原则之一(不绝对)
其他。
常用的MQ中间件有:
RocketMQ,ActiveMQ,Redis,Kafka,ZeroMQ,RabbitMQ