rabbitmq结合springboot配置发送消息和消费消息

发布于:2024-11-27 ⋅ 阅读:(7) ⋅ 点赞:(0)

在Spring Boot中集成RabbitMQ可以非常方便地实现消息的发送和接收。下面将简要介绍如何配置Spring Boot应用以使用RabbitMQ进行消息的发送与消费。

1. 添加依赖

首先,在你的pom.xml文件中添加Spring Boot对RabbitMQ的支持:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2. 配置RabbitMQ连接

application.propertiesapplication.yml中配置RabbitMQ的连接信息:

# application.properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

或者,如果你使用的是YAML格式:

# application.yml
spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

3. 定义消息队列、交换器和绑定

你可以通过Java配置来定义队列、交换器以及它们之间的绑定关系。例如:

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitConfig {

    public static final String MESSAGE_QUEUE = "messageQueue";
    public static final String MESSAGE_EXCHANGE = "messageExchange";
    public static final String ROUTING_KEY = "routingKey";

    @Bean
    public Queue queue() {
        return new Queue(MESSAGE_QUEUE, true);
    }

    @Bean
    public TopicExchange exchange() {
        return new TopicExchange(MESSAGE_EXCHANGE);
    }

    @Bean
    public Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);
    }
}

4. 发送消息

创建一个服务类来发送消息到RabbitMQ:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SenderService {

    private final RabbitTemplate rabbitTemplate;

    @Autowired
    public SenderService(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend(RabbitConfig.MESSAGE_EXCHANGE, RabbitConfig.ROUTING_KEY, message);
    }
}

5. 接收消息

创建一个监听器来接收来自RabbitMQ的消息:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class ReceiverService {

    @RabbitListener(queues = RabbitConfig.MESSAGE_QUEUE)
    public void receiveMessage(String message) {
        System.out.println("Received Message: " + message);
    }
}

6. 测试

最后,你可以通过调用SenderService中的sendMessage方法来测试消息是否能够成功发送,并且ReceiverService中的receiveMessage方法是否能够接收到消息。