如何解决消息队列的延时,以及过期失效问题?消息满了以后如何去处理,有几百万消息持续积压几小时应当如何去解决?
1. rabbitmq是可以设置过期时间的,TTL,超过时间后被rabbitMQ清理掉 导致数据丢失。一般过期时间在上线系统当中是不允许设置的,如果设置了,导致数据的丢失,那就只能在自己去手动写程序查出你丢失的数据,然后补发到MQ中。
2.消息队列满了应当如何去处理?
这个问题就很棘手了,在方案设计的时候就应当考虑到执行问题。 可以写个临时程序,接入数据来进行消费 消费一个丢一个 都不要了,快速消费掉所有的消息,然后就只能走刚才讲过的一个案例啦,手动写程序,补发数据。
3. 几百万数据持续积压问题?
首先呢,你需要先先解决自己的消费者,因为造成几百万数据的积压,可能是因为消费者宕掉了。解决完消费者之后增加消费者,消费积压的消息。如果你是KAFKA的话,可以更改自己当前消费者不要直接去操作数据库,操作你新创的partiton ,创建一个topic里配置假如说是30partiton,在这提高吞吐量,完成入库。