网站首页 > 开源技术 正文
RabbitMQ 是一个流行的开源消息中间件,遵循 AMQP(高级消息队列协议)。在微服务架构中,RabbitMQ 经常被用来进行异步消息传递和解耦。Spring Boot提供了对RabbitMQ的原生支持,使得集成变得简单而高效。本篇博客将介绍如何将RabbitMQ集成到Spring Boot项目中,并进行简单的消息发送和接收操作。
准备工作
在开始之前,确保你已经安装并配置了 RabbitMQ。你可以通过RabbitMQ 官方网站获取安装文档。
如果没有安装,可以通过以下命令在本地Docker中启动RabbitMQ容器,如下所示。
docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:management上面的这个命令将启动一个RabbitMQ容器,并通过15672端口提供管理控制台,通过5672端口提供消息队列服务。
创建Spring Boot项目
使用Spring Initializr创建一个新的Spring Boot项目,添加RabbitMQ相关依赖配置,然后再配置文件中添加RabbitMQ的连接,如下所示。
# RabbitMQ 配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/配置RabbitMQ消息发送与接收
接下来,我们创建一个简单的消息发送和接收的例子。
创建消息模型
我们创建一个简单的消息模型类
public class Message {
    private String content;
    public Message(String content) {
        this.content = content;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}配置消息发送与接收
我们需要创建生产者(Producer)和消费者(Consumer)。生产者负责发送消息到 RabbitMQ,消费者负责从 RabbitMQ 接收消息。
生产者(Producer)
在Spring Boot中,我们可以使用AmqpTemplate来发送消息。首先,我们需要创建一个配置类来声明消息队列、交换机和绑定。
@Configuration
public class RabbitConfig {
    @Bean
    public Queue queue() {
        return new Queue("spring-boot-queue", false);
    }
    @Bean
    public TopicExchange exchange() {
        return new TopicExchange("spring-boot-exchange");
    }
    @Bean
    public Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("springboot.routingkey");
    }
}
接下来,我们创建一个Producer类来发送消息
@Service
public class MessageProducer {
    @Autowired
    private AmqpTemplate amqpTemplate;
    @Autowired
    private Queue queue;
    public void sendMessage(String messageContent) {
        amqpTemplate.convertAndSend(queue.getName(), messageContent);
        System.out.println("Message sent: " + messageContent);
    }
}消费者(Consumer)
我们需要创建一个消费者类来接收消息。在Spring Boot中,消费者可以通过注解@RabbitListener来监听队列中的消息。
@Service
public class MessageConsumer {
    @RabbitListener(queues = "spring-boot-queue")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}测试发送与接收消息
在SpringBootApplication类中,我们可以通过CommandLineRunner来测试消息发送和接收。
@SpringBootApplication
public class SpringBootRabbitmqApplication implements CommandLineRunner {
    @Autowired
    private MessageProducer messageProducer;
    public static void main(String[] args) {
        SpringApplication.run(SpringBootRabbitmqApplication.class, args);
    }
    @Override
    public void run(String... args) throws Exception {
        messageProducer.sendMessage("Hello RabbitMQ from Spring Boot!");
    }
}启动Spring Boot应用程序。如果RabbitMQ配置正确,将会看到控制台输出类似
Message sent: Hello RabbitMQ from Spring Boot!
Received message: Hello RabbitMQ from Spring Boot!这表示消息已经成功从生产者发送到RabbitMQ,并被消费者接收到。
总结
通过上述步骤,我们成功地将RabbitMQ集成到了Spring Boot项目中,完成了消息的发送和接收。RabbitMQ的高可用性和灵活性使其在处理大规模消息传递时非常有用,Spring Boot的简化配置和注解使得集成过程变得非常简单。如果有任何问题,欢迎在评论区留言。
猜你喜欢
- 2024-11-18 在SpringBoot中应该避免的反模式 - Ali
 - 2024-11-18 大厂面试系列(四):Spring相关
 - 2024-11-18 SpringBoot入门系列(一)如何快速创建SpringBoot项目
 - 2024-11-18 Spring Boot 2.4 部署你的第一个应用需要的环境
 - 2024-11-18 跟着振锁撸全栈之JAVA入门 | 创建自己的第一个网站项目
 - 2024-11-18 SpringBoot这玩意儿当然不能更好了
 - 2024-11-18 Java基础学习路线之SpringBoot入门
 - 2024-11-18 为什么 IDEA 把 Spring Boot 宠上天,这些神仙技巧告诉你答案
 - 2024-11-18 Tomcat回显技术学习汇总
 - 2024-11-18 年末的一波美团面试,被一波连环炮给轰了回来,做足准备来年再战
 
欢迎 你 发表评论:
- 1588℃北京那些看上去很牛的车牌们!(北京厉害车牌)
 - 1107℃2025年度视频去水印软件TOP5对比:哪款最值得用
 - 683℃《我的世界》不同版本的差异 ——新手向
 - 595℃新疆话里的“虫子”
 - 515℃中兴光猫 Telnet下设置大全(中兴光猫命令大全)
 - 513℃蓝牙设备配对失败的系统性解决方案与技术解析
 - 509℃未备份电脑文件数据恢复的七种方法
 - 488℃工艺管道常用英文缩写 英汉对照
 
- 最近发表
 
- 标签列表
 - 
- jdk (81)
 - putty (66)
 - rufus (78)
 - 内网穿透 (89)
 - okhttp (70)
 - powertoys (74)
 - windowsterminal (81)
 - netcat (65)
 - ghostscript (65)
 - veracrypt (65)
 - asp.netcore (70)
 - wrk (67)
 - aspose.words (80)
 - itk (80)
 - ajaxfileupload.js (66)
 - sqlhelper (67)
 - express.js (67)
 - phpmailer (67)
 - xjar (70)
 - redisclient (78)
 - wakeonlan (66)
 - tinygo (85)
 - startbbs (72)
 - webftp (82)
 - vsvim (79)
 
 

本文暂时没有评论,来添加一个吧(●'◡'●)