消息过期怎么办

当大量堆积的消息堆积后,默认是消息进入队列后,一直会存在,直到消费掉。rabbitmq的压力会很大,如果rabbitmq因为消息积压而导致崩溃。 业务会受到影响,甚至瘫痪。

RabbitMQ解决方案:
消息过期时间(TTL=Time to Live),防止消息大量堆积。

TTL应该大于服务的平均启动时间。防止由于重启消息过期后被丢弃。如果TTL设置3秒,但是我们的应用启动要8秒,那重启一次,数据就过期了。

TTL大于业务高峰期。比如秒杀这种场景,可以设置30-50分钟。

消息(TTL)
单条消息的过期时间。

队列(TTL)
进入这个队列的所有消息都有一个固定过期时间,队列中所有消息的过期时间。 队列过期时间(Expire)

在发送的时候,设置消息的过期时间。

1
2
func (ch *Channel) Publish(exchange, key string, mandatory, immediate bool, msg Publishing)
Publishing类型中 Expiration字段中,设置TTL

RabbitMQ该如何学习

计算机学科是一个要求动手能力很强的学科,通过实战,用实际项目,把知识牢牢掌握住。

《Go语言+RabbitMQ实战课》-课程目录海报 《Go+RabbitMQ课程》-优惠券
添加微信 公众号更多内容
wechat gzh