要将RabbitMQ集成到Springboot,你需要遵循以下步骤:
- 添加依赖:在Spring Boot项目的构建配置文件(如Maven或Gradle)中,添加RabbitMQ的依赖。
对于Maven,添加如下依赖:
xml复制代码
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
...
</dependencies>
对于Gradle,添加如下依赖:
groovy复制代码
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-amqp'
...
}
- 配置RabbitMQ:在Spring Boot的配置文件中(application.properties或application.yml),配置RabbitMQ的相关属性。
application.properties配置示例:
properties复制代码
spring.rabbitmq.host=192.168.247.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=123
spring.rabbitmq.virtual-host=/root
application.yml配置示例:
yaml复制代码
spring:
rabbitmq:
host: 192.168.247.128
port: 5672
username: root
password: 123
virtual-host: /root
- 声明并创建队列:在Spring Boot应用中,通过RabbitAdmin或直接在配置文件中声明并创建队列。
在代码中声明并创建队列的示例:
java复制代码
@Configuration
public class RabbitConfig {
@Bean
public Queue queue() {
return new Queue("hello", true);
}
}
或者,在配置文件中声明并创建队列:
properties复制代码
spring.rabbitmq.queues[0]=hello
spring.rabbitmq.durable[0]=true
- 声明并创建交换器:创建交换器并与队列进行绑定。
在代码中声明并创建交换器的示例:
java复制代码
@Configuration
public class RabbitConfig {
@Bean
public DirectExchange exchange() {
return new DirectExchange("hello-exchange");
}
}
在配置文件中声明并创建交换器的示例:
properties复制代码
spring.rabbitmq.exchanges[0]=hello-exchange
spring.rabbitmq.type[0]=direct
- 声明路由和绑定:将交换器和队列进行绑定。
在代码中声明并创建路由和绑定的示例:
java复制代码
@Configuration
public class RabbitConfig {
@Bean
public Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("hello");
}
}
在配置文件中声明并创建路由和绑定的示例:无(需要编写额外的配置代码)
6. 发送和接收消息:编写代码以发送和接收RabbitMQ消息。可以通过使用RabbitTemplate类来发送消息,并通过在类上添加@RabbitListener注解来接收消息。例如:
发送消息的代码示例:
java复制代码
@Service
public class RabbitService {
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String message){
rabbitTemplate.convertAndSend("hello",message); //第一个参数是exchange的名字,第二个参数是要发送的消息内容。 默认发送到所有的队列和topic。 如果指定了routing key,则发送到指定的队列或者topic。 如果是exchange的name指定的类型是direct,那么就发送到指定的队列。 如果是交换机类型是topic,那么就发送到指定的topic。 如果是交换机类型是headers,那么就发送到指定的headers。 如果是交换机类型是fanout,那么就发送到所有的队列。 如果是交换机类型是direct,那么就发送到指定的队列。 如果是交换机类型是topic,那么就发送到指定的topic。 如果是交换机类型是headers,那么就发送到指定的headers。 如果是交换机类型是fanout,那么就发送到所有的队列。 如果是交换机类型是direct,那么就发送到指定的队列。 如果是交换机类型是topic,那么就发送到指定的topic。 如果是交换机类型是headers,那么就发送到指定的headers。 如果是交换机类型是fanout,那么就发送到所有的队列。 如果是交换机类型是direct,那么就发送到指定的队列。 如果是交换机类型是topic,那么就发送到指定的topic。