之前在消费者的拦截器实现过 ttl,但是那个过期时间是固定的,且不符合条件的消息直接就扔掉了(我们可以把他存起来,比如死信队列等)。
现在希望对于每个消息都能够自定义过期时间。可以在每条消息是加 header(这个 header 里保存了过期时间,类似请求头的 header 嘛)。到时候消费的时候取出消息的 header 就可以了。
代码实现:
在发送时设置 header:
消费者拦截器:
如果对过期的消息还有其他需求,那么想办法存起来。比如我看 rabbitmq 一篇文章,可以再创建一个 topic,用来专门存放过期消息。