HDT3213 / delayqueue

Simple, reliable, installation-free distributed delayed delivery message queue in Go. 简单、可靠、免安装的分布式延时投递消息队列
https://www.cnblogs.com/Finley/p/16400287.html
Apache License 2.0
303 stars 54 forks source link

ttl设置很长时间会不会有问题 #4

Closed lz-freedom closed 2 years ago

lz-freedom commented 2 years ago

我是当定时队列使用的,我们的需求是T(工作日)+1执行,所以消息在redis里面的时候可能会有点长 例如国庆是插入消息后的第八天取出消息

担心ttl设置的比较长之后会不会被自动清理掉了

HDT3213 commented 2 years ago

不会的,在预计投递时间之后再经过 msgTTL 指定的时长消息才会过期。

https://github.com/HDT3213/delayqueue/blob/master/delayqueue.go#L148

// store msg
msgTTL := t.Sub(now) + q.msgTTL // delivery + q.msgTTL
err := q.redisCli.Set(ctx, q.genMsgKey(idStr), payload, msgTTL).Err()
if err != nil {
return fmt.Errorf("store msg failed: %v", err)
}