Spring Boot RabbitMQ 创建 Queue
1. 简介
在使用 Spring Boot 开发应用程序时,我们常常需要使用消息队列来实现异步通信。RabbitMQ 是一个可靠、高效的开源消息代理,它支持多种消息协议,包括 AMQP(高级消息队列协议)。本文将介绍如何使用 Spring Boot 创建 RabbitMQ 的队列(Queue)。
2. 准备工作
在开始之前,我们需要确保以下几点已就绪:
- 安装 RabbitMQ:在本地环境中安装 RabbitMQ,并启动 RabbitMQ 服务。
- 创建 Spring Boot 项目:使用 Spring Initializer 创建一个新的 Spring Boot 项目。
3. 创建 RabbitMQ 配置类
首先,我们需要在 Spring Boot 项目中创建一个配置类,用于配置 RabbitMQ 的连接信息。创建一个名为 RabbitMQConfig
的类,并添加以下代码:
@Configuration
public class RabbitMQConfig {
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost("localhost"); // 设置 RabbitMQ 服务地址
connectionFactory.setPort(5672); // 设置 RabbitMQ 服务端口
connectionFactory.setUsername("guest"); // 设置 RabbitMQ 用户名
connectionFactory.setPassword("guest"); // 设置 RabbitMQ 密码
return connectionFactory;
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
return rabbitTemplate;
}
}
以上代码中,我们使用了 @Configuration
注解来表明这是一个配置类。我们创建了一个 connectionFactory
Bean,用于创建 RabbitMQ 的连接工厂,并设置了 RabbitMQ 的地址、端口、用户名和密码。接下来,我们创建了一个 rabbitTemplate
Bean,用于发送和接收消息。
4. 创建消息监听器
接下来,我们需要创建一个消息监听器,用于接收 RabbitMQ 发送的消息。创建一个名为 MessageListener
的类,并添加以下代码:
@Component
public class MessageListener {
@RabbitListener(queues = "myQueue") // 监听名为 "myQueue" 的队列
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
以上代码中,我们使用了 @Component
注解来表明这是一个组件类。我们创建了一个 receiveMessage
方法,并使用 @RabbitListener
注解来指定监听的队列名为 "myQueue"。当有消息到达队列时,该方法将被调用,并打印消息内容。
5. 创建队列
现在,我们可以开始创建 RabbitMQ 的队列了。创建一个名为 QueueCreation
的类,并添加以下代码:
@Configuration
public class QueueCreation {
@Autowired
private AmqpAdmin amqpAdmin;
@PostConstruct
public void createQueue() {
Queue queue = new Queue("myQueue"); // 创建名为 "myQueue" 的队列
amqpAdmin.declareQueue(queue); // 声明队列
}
}
以上代码中,我们使用了 @Configuration
注解来表明这是一个配置类。我们创建了一个 createQueue
方法,并使用 @PostConstruct
注解来指定该方法在 Bean 初始化之后执行。在该方法中,我们创建了一个名为 "myQueue" 的队列,并使用 amqpAdmin
的 declareQueue
方法来声明队列。
6. 运行项目
现在,我们可以运行我们的 Spring Boot 项目,并测试 RabbitMQ 队列的创建和消息的发送与接收。
首先,我们需要在项目的启动类上添加 @EnableRabbit
注解,用于启用 RabbitMQ 相关功能。在启动类的 main
方法中添加以下代码:
@SpringBootApplication
@EnableRabbit // 启用 RabbitMQ 相关功能
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
接下来,我们可以在项目的任意位置使用 rabbitTemplate
发送消息到队列。例如,在某个 Controller 类中添加以下代码:
@RestController
public class MessageController {
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping("/sendMessage")
public String sendMessage() {
rabbitTemplate.convertAndSend("myQueue", "Hello, RabbitMQ!"); // 发送消息到名为 "myQueue" 的队列
return "Message sent!";
}
}
以上代码中