利用 ttl 和死信队列实现延时消息功能****
Ttl****
队列的一个可选属性。该队列的消息多少毫秒后过期。同样,每条消息也可以通过 expiration 属性来设置自己的过期时间。
死信队列****
使用方式基本上和普通队列一样,可以为一个队列设置死信队列参数,设置后,该队列过期和被拒收的消息都会被路由到死信队列里。
具体代码如下:
x-message-ttl:消息过期时间
如果想设置每条消息的过期时间可使用如下配置
当队列消息过期时间和单条消息过期时间都有配置时,以短的一个为准,比如这里是 5000 毫秒生效。
x-dead-letter-exchange:死信交换器,当消息过期或被拒收时将会通过它来路由。
x-dead-letter-routing-key:死信路由键
两个消费者****
消费者一绑定正常的队列名和交换器,路由键。
消费者二绑定死信队列和死信交换器,死信路由键。
结果:
正常消费:开启消费者一,消费者二无法收到消息。
死信消费:关闭消费者一,在消息发送 5 秒后,消费者二收到消息。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于