rabbitmq消费者端避免消息丢失

代码中设置

 @RabbitListener(queues = "direct1.demo1")
    public void consumer(@Payload MQMessage message1 , Message message, @Headers Map<String,Object> headers, Channel channel)throws IOException{
        System.out.println("监听程序1开始执行"+message1.getMessage());
        if(i>7){
            System.out.println("重发");
            i++;
            i=i>10?5:i;
            //重发,不会丢失队列
            channel.basicNack((Long) headers.get(AmqpHeaders.DELIVERY_TAG),false,true);
        }else {
            System.out.println("已收到,消息出队列");
            //ack确认接收消息完毕
            i++;
            channel.basicAck((Long)headers.get(AmqpHeaders.DELIVERY_TAG),true);
        }

    }

yml中设置

pring:
  rabbitmq:
    host: 47.102.113.11
    username: xia
    password: 1235
    virtual-host: /xiaoliu
    listener:
      direct:
        **acknowledge-mode: manual**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值