rabbitmq-workqueue自动确认改手动确认机制

Posted gavin苗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rabbitmq-workqueue自动确认改手动确认机制相关的知识,希望对你有一定的参考价值。

只发生在consumer端,关闭autoAck, channel.basicQos(1);只发送一条。 channel.basicAck(envelope.getDeliveryTag(),false);一条一条手工确认,

 

package com.gavin.mq.autoack;

import com.gavin.utils.RabbitMQUtils;
import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class WorkConsumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        Connection connection = RabbitMQUtils.getConnection();
        Channel channel = connection.createChannel();
        /**
         * 通道每次只能消费1个消息,不加这个默认消费者可以消费所有生产者发送的消息,比如消费5条,有可能消费者宕机丢失2条。
         * 因此让能者多劳,换消费者2消费。
         */
        channel.basicQos(1);
        channel.queueDeclare("work",true,false,false,null);
        channel.basicConsume("work",false,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println(new String(body));
                /**
                 * 参数1:手动确认标识,确定队列中的哪个具体的消息
                 * 参数2:是否开启多个消息同时手工确认。每次确认一个
                 */
                channel.basicAck(envelope.getDeliveryTag(),false);
            }
        });
    }
}

  

以上是关于rabbitmq-workqueue自动确认改手动确认机制的主要内容,如果未能解决你的问题,请参考以下文章

rabbit mq 手动重试机制

在 RabbitMQ 中手动确认消息

求帮忙改个js脚本,点击按钮让它运行就自动点击,不想手动点一下,谢谢大神们

手机时间怎么修改?

RabbitMQ 消息队列学习

RabbitMQ消息队列笔记