在Spring Boot中整合RabbitMQ,通常包括以下几个步骤:
1. 添加依赖
在 Maven 或 Gradle 构建文件中添加 Spring Boot AMQP 的起步依赖。以 Maven 为例,在 pom.xml
文件中添加以下内容:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
对于 Gradle 用户,在 build.gradle
文件内使用如下配置:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-amqp'
}
2. 配置 RabbitMQ 连接信息
在 Spring Boot 应用的 application.properties
或者 application.yml
中配置 RabbitMQ 服务器的连接参数:
# application.properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
或 YAML 格式:
# application.yml
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
3. 定义消息生产者和消费者
- 生产者:创建一个服务类,注入
RabbitTemplate
并使用它来发送消息到指定的交换器和队列。
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MessageProducerService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private Queue myQueue; // 假设已定义了一个名为 myQueue 的队列
public void sendMessage(String message) {
rabbitTemplate.convertAndSend(myQueue.getName(), message);
}
}
- 消费者:创建一个监听器(Listener)类,实现
MessageListener
接口或者使用@RabbitListener
注解处理从队列中消费的消息。
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MessageConsumerService {
@RabbitListener(queues = "myQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
// 在这里处理消息逻辑
}
}
4. 配置交换器、队列与绑定
在 Spring Boot 应用启动时通过 Java 配置类或 XML 配置文件声明并绑定所需的交换器、队列以及它们之间的关系。例如,使用 Java 配置:
@Configuration
public class RabbitConfig {
@Bean
public Queue myQueue() {
return new Queue("myQueue", true); // 第二个参数表示是否持久化队列
}
@Bean
public DirectExchange directExchange() {
return new DirectExchange("myDirectExchange");
}
@Bean
public Binding binding(Queue myQueue, DirectExchange directExchange) {
return BindingBuilder.bind(myQueue).to(directExchange).with("routingKey"); // 设置路由键
}
}
完成以上步骤后,你的 Spring Boot 应用程序就可以与 RabbitMQ 服务进行交互了,实现消息的生产和消费功能。