rabbitmq消费者端避免消息丢失

    技术2022-07-10  123

    代码中设置

    @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**
    Processed: 0.008, SQL: 9