springboot整合rabbitmq死信队列
什么是死信
说道死信,可能大部分观众大姥爷会有懵逼的想法,什么是死信?
死信队列,俗称DLX,翻译过来的名称为Dead Letter Exchange 死信交换机。
当消息限定时间内未被消费,成为 Dead Message后,可以被重新发送到另一个交换机中,发挥其应有的价值!
需要测试死信队列,则需要先梳理整体的思路,如可以采取如下方式进行配置:
从上面的逻辑图中,可以发现大致的思路:
.1. 消息队列分为正常交换机、正常消息队列;以及死信交换机和死信队列。
2. 正常队列针对死信信息,需要将数据 重新 发送至死信交换机中。
死信使用的场景
- 消息被拒绝
- 消息ttl过期
- 队列达到最大长度
这三种场景就会成为死信,然后放入死信交换机
import org.springframework.amqp.core.\*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class RabbitmqConfig {
//正常交换机的名字
public final static String EXCHANGE\_NAME = "exchange\_name";
//正常队列的名字
public final static String QUEUE\_NAME="queue\_name";
//死信交换机的名字
public final static String EXCHANGE\_DEAD = "exchange\_dead";
//死信队列的名字
public final static String QUEUE\_DEAD="queue\_dead";
//死信路由key
public final static String DEAD\_KEY="dead.key";
//创建正常交换机
@Bean(EXCHANGE\_NAME)
public Exchange exchange(){
return ExchangeBuilder.topicExchange(EXCHANGE\_NAME)
//持久化 mq重启后数据还在