spring boot rabbitmq异步发送消息
时间: 2024-06-19 15:00:59 浏览: 229
Spring Boot 和 RabbitMQ 结合使用可以方便地构建基于消息队列的异步通信系统。在 Spring Boot 中,RabbitMQ 提供了一个简单易用的整合方案,让你能够轻松地处理消息的生产者(Producer)和消费者(Consumer)。
1. 引入依赖:首先,你需要在你的 Maven 或 Gradle 项目中添加 Spring AMQP 和 RabbitMQ 的依赖。例如,Maven 项目的 pom.xml 文件中添加:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
```
2. 配置 RabbitMQ:在 application.properties 或 application.yml 文件中配置 RabbitMQ 的连接信息,包括主机名、端口号、队列名称等。
```properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
```
3. 创建 RabbitMQ 的配置类:Spring Boot 会自动扫描该类下的配置,比如创建 RabbitTemplate 实例。
```java
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitConfig {
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory factory = new CachingConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
return factory;
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate template = new RabbitTemplate(connectionFactory);
return template;
}
}
```
4. 生产者(发送消息):使用 `RabbitTemplate` 发送消息到指定队列。
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class RabbitProducer {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String message, String queueName) {
rabbitTemplate.convertAndSend(queueName, message);
}
}
```
5. 消费者(接收消息):创建一个消费者类,监听指定队列,并处理接收到的消息。
```java
import org.springframework.amqp.annotation.DeleteQueue;
import org.springframework.amqp.annotation.QueueBind;
import org.springframework.amqp.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@QueueBind(value = "myQueue")
public class RabbitConsumer {
@RabbitListener
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
```
阅读全文