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**
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章