消息中间件
什么是MQ
为什么要使用MQ
1、如何避免消息重复投递和重复消费
在生产数据时,消自体中必须要有一个bizId作为去重依据
在消费一条消息的时候,自己判断一下是否已经消费过了
2、消息丢失,如何保证消息的可靠性传输
消息丢失,可能出现在生产者,MQ,消费者;
生产者丢失:生产者发送数据到MQ的时候,可能因为网络问题半路搞丢了。
可以选择MQ的事务功能,但是会降低吞吐量;
可以使用MQ的发送确认模式,发送消息给MQ之后等待MQ回传确认消息,自己需要维护MQ分配的唯一ID
MQ中丢失:MQ开启持久化,把消息持久化到磁盘
消费者丢失:接收到消息,还没处理,进程挂掉了;
在消息处理完成之后,向MQ发送确认消息。
3、如何保证消息的顺序性
场景:一个queue对应多个consumer,无法保证顺序
保证顺序:一个queue对应一个consumer