延迟消息:生产者发送消息时指定一个时间,消费者不会立刻收到消息,而是在指定时间之后才收到消息。
1.死信交换机
初始设定消息的过期时间为30s,由于simple.queue队列没有消费者,当消息到达过期时间,没人消费就会成为死信,然后投到死信交换机dlx.direct中,就可供消费者消费。通过这种机制就可实现延迟消息。
发送方:
接收方:
2.延迟消息插件
RabbitMQ的官方也推出了一个插件,原理就是设计了一种支持延迟消息功能的交换机,当消息投递到交换机后可以暂存一定的时间,到期后再投入到队列中。虽然使用很便捷,但是对mq的性能来说还是有影响。
发送方发送消息时需要通过消息头来设置过期时间:
消费者方设置交换机支持延迟消息: