RabbitMQ如何实现延时队列?
RabbitMQ实现延时队列一般有两种形式:
**第一种方式:**利用两个特性: Time To live(TTL),Dead letter Exchanges(DLX)[A消息队列过期–>发送给B队列]
**第二种方式:**利用RabbitMQ的插件x-delay-message
RabbitMQ可以针对队列设置x-expires(则队列中所有的消息都有相同的过期时间或者针对Message设置x-message-tt(对消息进行单独设置,每条消息TTL可以不同),来控制消息的生存时间,如果超时(两者同时设置以最先到期的为准),则消息变为dead letter(死信))
Dead Letter Exchanges(DLX)
RabbitMQ的Queue可以配置x-dead-letter-exchange和x-dead-letter-routing-key(可选)两个参数,如果队列中出现dead letter,则按照者两个参数重新路由转换到指定的队列.
x-dead-letter-exchange:出现dead letter重新发送消息到指定exchange
x-dead-letter-routing-key: 出现dead letter之后将dead letter重新按照指定的routing-key发送
实际应用:
/**
*延时队列-->负责数据展示存储
*/
@Bean
public Queue deaySeckillQueue(){
return QueueBuilder.durable("delaySeckillQueue")
.withArGument("x-dead-letter-exchange","seckliExchange")
.withAragument("x-dead-letter-routing-key,seckillQueue"")
.bulid();
}
来源:CSDN
作者:d nn y@1
链接:https://blog.csdn.net/mrDyang/article/details/104449434