一
死信队列 dead-letter-exchange
可以与备份交换机类比学习
备份交换机处理的是,消息未被路由的情况进入备份交换机绑定的队列
死信队列处理的是,
1.消息拒绝且requeue参数为false
2.消息过期
3.队列达到最大长度
二 例子
channel.exchangeDeclare("exchange.dlx","direct",true);//声明一个交换机 后面与死信队列绑定
channel.exchangeDeclare("exchange.normal","fanout",true);//声明一个广播交换机
Map <String ,Object> args = new HashMap <String ,Object>( );
args.put("x-message-ttl","10000");//队列中消息超时时间
args.put(" x-dead-letter-exchange","exchange.dlx");
args.put(" x-dead-letter-routing-key","rountingkey");
channel.queueDeclare( "queue.normal " , true , false , false , args);//声明一个队列
channel .queueBind( "queue.normal" , " exchange .normal" , "");//队列绑定到交换机
channel. queueDec1are( "queue.d1x " , true , false , false , null) ;//声明一个队列
channel .queueBind( "queue.dlx" , " exchange.dlx" , "routingkey");//绑定死信队列
测试
channel . basicPublish( " exchange.normal" , "rk" ,
MessageProperties.PERSISTENT_TEXT_PLAIN , " dlx " .getBytes()) ;
//发送到正常的广播交换机exchange.normal上,存入到quque.normal,10s后过期,则会转发到交换机
exchange.dlx上,此时,根据设置的x-dead-letter-routing-key ,匹配到了queue.dlx,所以,最后消息存入;