在我们开发项目过程中,有些有些不关心的逻辑想异步处理,或者剥离依赖又或者遇到大流量的情况下会选择使用MQ,它可以帮助我们解决解耦,异步,削峰。但是在引入了MQ我们系统也会变得复杂,引入新的问题,会有哪些问题呢?
重复消费问题重复消费数据会在新增的时候多插入数据或者更新的时候会覆盖数据的情况。因此,我们可以采用分布式锁或者唯一索引去解决新增重复数据的问题。使用乐观锁version去解决更新覆盖的问题。
数据一致性问题在发送到消息消费过程中如果出现一个环节问题,数据就会不一致。因此,消费者消费失败增加重试机制。
数据丢失问题我们不能保证在使用过程中数据不丢失。因此,我们可以先维护一个状态表在消费者结束后修改状态,生产者定期扫描如果有问题的数据重发
顺序消费问题在某些场景下,数据有状态的不能乱。因此,可以把相同的数据路由到同一个队列中
消息堆积问题如果数据出现堆积,那么一般是消费能力跟不上。因此,我们消费端加多个队列去消费。



