【RabbitMQ】8死信队列

本文详细介绍了如何在Spring Cloud中使用AMQP实现死信队列,包括死信的概念、来源,以及通过创建交换机、队列、绑定和设置TTL来管理死信消息的过程。关键步骤包括声明直接交换机、配置死信队列和路由键,以及设置消息过期时间和接收死信消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、死信概念

        无法被消费的消息

2、死信的来源

        1)消息TTL过期;

        2)队列达到最大长度;

        3)消息被拒绝,且requeue=false

3、死信的实现

3.1、创建交换机

//创建交换机 
channel.exchangeDeclare(NOR_EXCHANGE, BuiltinExchangeType.DIRECT); 
channel.exchangeDeclare(DEAD_EXCHANGE, BuiltinExchangeType.DIRECT);

3.2、创建队列

//声明普通队列 
Map<String,Object> arguments = new HashMap<>(); 
//过期时间10s=10000ms 
//arguments.put("x-message-ttl",10000); 
//正常队列设置死信交换机 
arguments.put("x-dead-letter-exchange",DEAD_EXCHANGE); 
//设置死信RoutingKey 
arguments.put("x-dead-letter-routing-key","lisi"); channel.queueDeclare(NOR_QUEUE,false,false,false,arguments); 
//声明死信队列 
channel.queueDeclare(DEAD_QUEUE,false,false,false,null);

3.3、交换机与队列绑定

//绑定普通交换机与普通队列 
channel.queueBind(NOR_QUEUE,NOR_EXCHANGE,"zhangsan"); 
//绑定普通交换机与普通队列 
channel.queueBind(DEAD_QUEUE,DEAD_EXCHANGE,"lisi");

3.4、死信设置TTL时间

//死信消息 设置TTL时间 单位ms 
AMQP.BasicProperties properties = new AMQP.BasicProperties().builder().expiration("10000").build();

3.5、死信队列接收消息

channel.basicConsume(DEAD_QUEUE,true,deliverCallback,cancelCallback);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值