RabbitMQ手动确认

pom依赖

<!--rabbitmq-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

yml / properties配置文件

spring:
    rabbitmq:
    	# ip地址
        host: 
        # 端口
        port: 5672
        # 用户名
        username: guest
        # 密码
        password: 
        listener:
          simple:
            # 表示消费者消费成功消息以后需要手工的进行签收(ack确认),默认为 auto
            acknowledge-mode: manual

注意:手动模式配置 acknowledge-mode: manual 默认:auto

手动模式消费者(监听类)三个方法

手动确认,这个比较关键,也是我们配置接收消息确认机制时,多数选择的模式。消费者收到消息后,手动调用basic.ack/basic.nack/basic.reject后,RabbitMQ收到这些消息后,才认为本次投递成功。

方法介绍

channel.basicAck(deliverTag, true); 消费成功,确认消息。第二个参数是否应用于多消息。
channel.basicNack(deliverTag, false, true);不确认(拒绝)deliveryTag对应的消息。第二个参数是否应用于多消息,第三个参数是否requeue。此方法与basicReject区别就是同时支持多个消息,可以nack该消费者先前接收未ack的所有消息。nack后的消息也会被自己消费到。
channel.basicReject(deliverTag, false);拒绝deliveryTag对应的消息。第二个参数是否requeue,true则重新入队列,否则丢弃或者进入死信队列。该方法reject后,该消费者还是会消费到该条被reject的消息。
额外介绍:
channel.basicRecover(true);是否恢复消息到队列。参数是是否requeue,true则重新入队列,并且尽可能的将之前recover的消息投递给其他消费者消费,而不是自己再次消费。false则消息会重新被投递给自己。

参考:https://blog.csdn.net/weixin_43822632/article/details/119606666,https://blog.csdn.net/fly_leopard/article/details/102821776

posted @ 2022-10-24 19:27  chandol  阅读(517)  评论(0编辑  收藏  举报