使用消息中间件的场景:
- 异步:
例如用户注册成功后需要将用户数据入库,并且发送邮件和短信提示,可以在数据入库后立即响应用户,然后发送消息到mq中执行发送邮件和短信的操作。 - 解耦:
用户下单成功,发送一条减少库存的消息到mq中。 - 流量削峰:
比如10W人抢购10个商品,在Mq中可以设置队列的长度为10,后面来的请求直接舍弃掉,降低DB的压力。
常见的MQ:
- amq:性能不好,容易产生消息堆积
- kafaka:容易丢失消息,可以用来做日志收集
- rabbitmq:erlang语言写的,性能比amq好,稳定性比rabbimq好,装环境注意版本号匹配
- rmq:(阿里)消息稳定,速度快(收费)