什么是死信队列?
死信队列,英文缩写:DLX 。Dead LetterExchange(死信交换机),当消息成为Dead message后,可以被重新发送到另一个交换机,这个交换机就是DLX。
消息成为死信的三种情况:
- 1.队列消息长度到达限制;
- ⒉消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;
- 3.原队列存在消息过期设置,消息到达超时时间未被消费;
DLX死信队列 的测试
队列绑定死信交换机:
给队列设置参数: x-dead-letter-exchange和x-dead-letter-routing-key
代码:
spring-rabbitmq-producer.xml中相关配置:
<!--加载配置文件-->
<context:property-placeholder location="classpath:rabbitmq.properties"/>
<!-- 定义rabbitmq connectionFactory -->
<rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}"
port="${rabbitmq.port}"
username="${rabbitmq.username}"
password="${rabbitmq.password}"
virtual-host="${rabbitmq.virtual-host}"
publisher-confirms="true"
publisher-returns="true"
/>
<!--定义管理交换机、队列-->
<rabbit:admin connection-factory="connectionFactory"/>
<!--定义rabbitTemplate对象操作可以在代码中方便发送消息-->
<rabbit:template id=