rabbitmq + springboot 实现任务队列
时间: 2025-06-27 15:16:00 浏览: 11
### 如何使用Spring Boot与RabbitMQ实现任务队列
为了在Spring Boot应用中利用RabbitMQ创建并管理任务队列,需先完成基本配置,在`application.properties`或`application.yml`文件内指定RabbitMQ服务器的连接参数[^1]。
#### 配置RabbitMQ连接信息
对于基于properties格式的应用程序而言:
```properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
```
而对于采用YAML风格的应用,则应如下所示设置:
```yaml
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
```
#### 定义消息队列和交换机
定义用于处理特定类型工作的队列以及关联的交换机是必要的。下面是一个简单的例子,展示了如何声明一个名为`taskQueue`的任务队列及其绑定关系[^3]。
```java
@Configuration
public class TaskQueueConfig {
@Bean
Queue taskQueue() {
return new Queue("task_queue", true);
}
@Bean
DirectExchange taskExchange() {
return new DirectExchange("task_exchange");
}
@Bean
Binding bindingTask(Queue taskQueue, DirectExchange taskExchange) {
return BindingBuilder.bind(taskQueue).to(taskExchange).with("task_routing_key");
}
}
```
#### 发送任务至队列
通过编写服务类中的方法向上述已建立好的队列发送工作项。这里给出了一种可能的方式——即构建了一个能够发布新任务的服务组件实例。
```java
@Service
public class TaskProducerService {
private final AmqpTemplate amqpTemplate;
public TaskProducerService(AmqpTemplate amqpTemplate) {
this.amqpTemplate = amqpTemplate;
}
public void sendTask(String messageBody){
System.out.println("[x] Sent '" + messageBody + "'");
amqpTemplate.convertAndSend("task_exchange","task_routing_key",messageBody);
}
}
```
#### 接收来自队列的任务
最后一步是在监听器端接收这些被分配下来的工作单元,并执行相应的业务逻辑操作。此部分通常由带有`@RabbitListener`注解的方法负责实施[^5]。
```java
@Component
public class TaskConsumer {
@RabbitListener(queues = {"task_queue"})
public void receiveMessage(Message message) throws Exception{
String msg = new String(message.getBody());
System.out.println("[x] Received '" + msg + "'");
try {
// Simulate work by sleeping for a while...
doWork(msg);
} finally {
System.out.println("[*] Done.");
}
}
private void doWork(String task) throws InterruptedException {
Thread.sleep((new Random().nextInt(5)+1)*1000); // Work of variable duration with max. delay of 5 seconds.
}
}
```
以上就是关于怎样借助于Spring Boot框架同RabbitMQ协同运作来搭建起一套可靠的任务分发系统的概述说明。值得注意的是,实际项目开发过程中还需考虑更多细节方面的要求,比如错误重试机制、事务一致性保障等高级特性。
阅读全文
相关推荐


















