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