RabbitMQ问题
如何实现顺序消费?
消息放入到同一个队列中消费
如何解决消息不丢失?
方案:
如上图:消息丢失有三种情况,解决了以上三种情况就解决了丢失的问题
1、丢失1--->消息在到达交换机的时候;解决:MQ需要开启确认模式
2、丢失2--->在MQ内容丢失的问题;解决:开启消息持久化(交换机设置,队列设置)
3、丢失3--->消息抵达消费者的时候;解决:消费者开始手动ACK
如何解决消费积压?
1、多队列,根据不同消息类型放在不同队列
2、多消费者,根据消息的类型和优先级分配消费者
3、设置TTL,不能无限制阻塞,设置过期时间
如何解决消息重复?
原因:
1、生产者发送消息到MQ,但是由于网络波动,MQ没有回复,生产者又重新发送了一次
2、MQ消息到达消费者时,由于网络波动,没有回复,MQ又重新发送了一次
方案:幂等性
1、消息传递时,需要携带一个唯一ID,将此ID存到redis中
2、接收到消息,先去redis中查,如果有则直接丢弃此消息,如果没有正常消费,将该ID存redis设置TTL