Spring Boot RabbitMQ 创建 Queue

1. 简介

在使用 Spring Boot 开发应用程序时,我们常常需要使用消息队列来实现异步通信。RabbitMQ 是一个可靠、高效的开源消息代理,它支持多种消息协议,包括 AMQP(高级消息队列协议)。本文将介绍如何使用 Spring Boot 创建 RabbitMQ 的队列(Queue)。

2. 准备工作

在开始之前,我们需要确保以下几点已就绪:

  1. 安装 RabbitMQ:在本地环境中安装 RabbitMQ,并启动 RabbitMQ 服务。
  2. 创建 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" 的队列,并使用 amqpAdmindeclareQueue 方法来声明队列。

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!";
    }

}

以上代码中