spring boot 整合rabbitmq 使用 RabbitTemplate 实现 ACK 消息确认 最简单实现
时间: 2024-02-27 08:52:33 浏览: 28
好的,下面是一个简单的 Spring Boot 整合 RabbitMQ,使用 RabbitTemplate 实现 ACK 消息确认的示例:
首先,在 pom.xml 文件中添加 RabbitMQ 和 Spring Boot 的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
```
然后,在 application.yml 文件中配置 RabbitMQ 的连接信息:
```yaml
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
```
接下来,在代码中使用 RabbitTemplate 发送消息,并实现 ACK 消息确认:
```java
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.support.CorrelationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MessageSender implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnCallback {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String exchange, String routingKey, Object message) {
rabbitTemplate.setConfirmCallback(this);
rabbitTemplate.setReturnCallback(this);
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
rabbitTemplate.convertAndSend(exchange, routingKey, message, correlationData);
}
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
if (ack) {
System.out.println("消息发送成功:" + correlationData);
} else {
System.out.println("消息发送失败:" + cause);
}
}
@Override
public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
System.out.println("消息发送失败:" + message);
}
}
```
以上代码中,MessageSender 类是一个消息发送者,通过 sendMessage 方法发送消息,使用 CorrelationData 存储消息的唯一标识,用于 ACK 消息确认。在发送消息前,需要设置 ConfirmCallback 和 ReturnCallback,以便在消息成功或失败时得到通知。在实现 ConfirmCallback 和 ReturnCallback 接口的方法中,打印出消息的成功或失败信息。