RabbitMQ 中arguments详解(系列五之x-dead-letter)

注:以下程序使用C#实现

上篇文章我们讲了RabbitMQ如何设置队列的最大内容容量,本篇文章我们讲解arguments参数之dead-letter(死信)

RabbitMQ中的dead-letter,主要用来指定当一个消息被队列或者客户端丢弃之后,该如何处理这条消息,比如以前的文章我们讲过,队列的最大长度,当消息数量超过最大长度时,将丢弃一些消息,被丢弃的消息将无法被消费,如果使用dead-letter,我们可以指定当消息被丢弃之后,需要将消息重新发送到指定的队列

使用死信要用到两种参数:

  1. x-dead-letter-exchange
  2. x-dead-letter-routing-key

下面使用代码示例讲解如何配置死信参数

new Dictionary<stirng,object>{
{"x-max-length",1000},//队列最大长度为1000
{"x-dead-letter-exchange","myexchange"},//将丢弃的消息放到exchange中
{"x-dead-letter-routing-key","mydeadtest"}//放到exchange
}
channel.ExchangeDeclare("myexchange",ExchangeType.Direct, false,false,null);
channel.QueueDeclare("mydeadtest",false,false,false,null);

channel.QueueDeclare("mytest3",false,false,false,new Dictionary<string,object>{
{"x-max-length",1000},//这里我们为了测试方便,定义最大内容容量为1000字节
{"x-dead-letter-exchange","myexchange"},//将丢弃的消息放到exchange中
{"x-dead-letter-routing-key","mydeadtest"}//放到exchange
});

channel.QueueBind("deadTest", "myexchange", "mydeadtest", null);
channel.QueueBind("mytest3","myexchange","",null);
int i=0;
while(true){
i++;
var body=Encoding.UTF8.GetBytes("你好"+i);
channel.BasicPublish("myexchange","",null,body);
}

上面我们设置,当队列长度超出规定的最大长度1000时,就将丢弃的消息发送到myexchange中routingkey为mydeadtest的队列中,效果我们可以通过RabbitMQ管理界面查看

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值