采用rabbitMQ的延时队列。RabbitMQ具有以下两个特性,RabbitMQ可以针对Queue和Message设置x-message-tt,来控制消息的生存时间,如果超时,则消息变为dead letter。
RabbitMQ的Queue可以配置x-dead-letter-exchange和x-dead-letter-routing-key(可选)两个参数,用来控制队列内出现了deadletter,则按照这两个参数重新路由。结合以上两个特性,就可以模拟出延迟消息的功能。
优点就是高效,可以利用rabbitmg的分布式特性轻易的进行横向扩展,消息支持持久化增加了可靠性。