Java进阶篇-SpringBoot集成RobbitMQ

简介

        RabbitMQ是一个流行的开源消息代理软件,用于在应用程序之间进行消息传递。它是一个高度可靠的、可扩展的、多协议的消息代理,支持多种消息传递模式,如点对点、发布/订阅、工作队列等,可以帮助解决分布式应用程序中的通信问题。

        RabbitMQ的核心概念是消息、生产者、消费者和代理。消息是一个由生产者发送给代理的数据包,代理将其存储在队列中,并等待消费者来消费它。生产者是一个发送消息到代理的应用程序,消费者则是一个接收并处理消息的应用程序。代理是RabbitMQ的核心组件,它管理消息的传递、存储和路由

        RabbitMQ支持多种消息传递协议,包括AMQP(高级消息队列协议)、STOMP(简单文本协议)、MQTT(消息队列遥测传输)等。它还提供了一些高级特性,如消息确认、事务、持久化、消息优先级等,可以满足各种复杂的消息传递需求。

        RabbitMQ可以在多种平台上运行,并有各种语言的客户端库可供使用,如Java、Python、Ruby、C#等。它广泛用于企业应用程序中,如电子商务、金融交易、实时数据分析等场景

正文

1.添加依赖

        首先,在你的 Spring Boot 项目中,需要添加以下依赖

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

2.配置 RabbitMQ

在 application.properties 文件中添加 RabbitMQ 的配置

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

3.创建消息接收者

创建一个消息接收者,用于处理从 RabbitMQ 中接收到的消息

这里使用了 @Component 注解将 MessageReceiver 类声明为 Spring Bean,同时使用 @RabbitListener 注解标注了 receiveMessage 方法,表示它可以接收名为 myQueue 的 RabbitMQ 队列中的消息.

@Component
public class MessageReceiver {

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

4.创建消息发送者

这里同样使用了 @Component 注解将 MessageSender 类声明为 Spring Bean,并注入了 RabbitTemplate 对象,用于发送消息。sendMessage 方法会将消息发送到名为 myQueue 的 RabbitMQ 队列中.

@Component
public class MessageSender {

    private final RabbitTemplate rabbitTemplate;

    public MessageSender(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend("myQueue", message);
    }
}

5.启动应用程序

在 Spring Boot 应用程序的入口类中添加 @EnableRabbit 注解,并运行应用程序

@SpringBootApplication
@EnableRabbit
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

6.测试

现在就可以发送消息到 RabbitMQ 队列中,并通过 MessageReceiver 接收处理.

扫描二维码关注公众号,回复: 14913792 查看本文章
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest
class MyApplicationTests {

    @Autowired
    private MessageSender messageSender;
    
    @Test
    void test() {
        messageSender.sendMessage("Hello, RabbitMQ!");
    }
}

这将向名为 myQueue 的 RabbitMQ 队列发送一条消息,MessageReceiver 会接收并输出消息到控制台。

猜你喜欢

转载自blog.csdn.net/qq_33351639/article/details/129582849