无法手动ACK,感觉都是自动直接就ACK了,而且NACK回复的消息监听不到

来源:2-13 Rabbitmq高级特性-消费端特性讲解_流控服务和ACK重回队列

qq_闲汪_0

2020-08-19 11:56:23

消费者
//生产上一般不会开启自动ACK,因为要保证消息的准确消费
channel.basicConsume(queueName, false, consumer);

生产者
channel.confirmSelect();


//添加publisher消息监听
channel.addConfirmListener(new ConfirmListener() {
    @Override
    public void handleAck(long deliveryTag, boolean multiple) throws IOException {
        //消息投递成功处理
        System.out.println("【ACK confirm】deliveryTag:" + deliveryTag + ",multiple:" + multiple);
    }

    @Override
    public void handleNack(long deliveryTag, boolean multiple) throws IOException {
        //消息丢失处理
        System.out.println("【NACK confirm】deliveryTag:" + deliveryTag + ",multiple:" + multiple);
    }
});
channel.basicPublish(normalExchange, normalRoutingKey, true, properties, msg.getBytes());


写回答

1回答

qq_闲汪_0

提问者

2020-08-19

生产者的confirmListenter监听的是broker的ACK事件吧?消费者的basicACK是发送给broker的?好像生产者并不能接受到消费者的ACK回复。

0

Java架构师-技术专家

千万级电商项目从0到100全过程,覆盖Java程序员不同成长阶段的核心问题与解决方案

2672 学习 · 5839 问题

查看课程