目录
一、Consumer Ack的三种方式
(1)、自动确认:acknowledge = “none”,这是默认的方式,如果不配置的话,默认就是自动确认,消费方从消息队列中拿出消息后,消息队列中都会清除掉这条消息(不安全).
(2)、手动确认:acknowledge = “manual”,手动确认就是当消费者取出来消息其后的操作正常执行后,返回给消息队列,让其清除该条消息;如果后续执行有异常,可以设置requeue=true返回其消息队列,再让其消息队列重新给消费者发送消息.
(3)、根据异常情况确认(很麻烦):acknowledge = “auto”.
二、进入主题:SpringBoot+RabbitMQ实现手动Consumer Ack
1、pom文件中导入依赖坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、在生产者与消费者工程yml配置文件中开启手动Ack
spring:
rabbitmq:
host: 192.168.253.128 #ip
username: guest
password: guest
virtual-host: /
port: 5672
listener:
simple:
acknowledge-mode: manual #开启手动Ack
3、在生产者工程中创建一个配置类声明队列与交换机的关系
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
//交换机的名称;