SpringBoot集成RabbitMQ

318 阅读3分钟

要将RabbitMQ集成到Springboot,你需要遵循以下步骤:

  1. 添加依赖:在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'  

	    ...  

	}
  1. 配置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
  1. 声明并创建队列:在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
  1. 声明并创建交换器:创建交换器并与队列进行绑定。

在代码中声明并创建交换器的示例:

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
  1. 声明路由和绑定:将交换器和队列进行绑定。

在代码中声明并创建路由和绑定的示例:

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。