序言
本文给大家介绍如何使用 Docker 单机部署 RabbitMQ 并与 SpringBoot 整合使用。
一、部署流程
- 拉取镜像
docker pull rabbitmq:3-management
- 镜像拉取成功之后使用下面命令启动 rabbitmq 容器
docker run \# 指定用户名-eRABBITMQ_DEFAULT_USER=username \# 指定密码-eRABBITMQ_DEFAULT_PASS=password \# 指定容器名称--name mq \# 指定主机名称(任意)--hostname mq1 \# WEB 浏览器访问端口-p15672:15672 \# AMQP 协议端口-p5672:5672 \# 后台启动-d\# 引用的镜像 rabbitmq:3-management
- 打开浏览器输入网址
localhost:15672
进入 RabbitMQ 管理页面
二、SpringBoot 整合 RabbitMQ
2.1 使用 RabbitMQ 客户端
- 引入依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.6</version></parent><!-- amqp 依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency></dependencies>
- 使用案例
publicvoidstaticmain()throwsIOException,TimeoutException{// 配置连接ConnectionFactory factory =newConnectionFactory(); factory.setHost("xxx.xxx.xxx.xxx"); factory.setPort(5672); factory.setVirtualHost("/"); factory.setUsername("rabbit"); factory.setPassword("rabbit");// 获取连接对象Connection connection = factory.newConnection();// 获取频道Channel channel = connection.createChannel();// 创建队列String queueName ="simple.queue"; channel.queueDeclare(queueName,false,false,false,null);// 订阅消息 channel.basicConsume(queueName,true,newDefaultConsumer(channel){@OverridepublicvoidhandleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body)throwsIOException{String msg =newString(body);System.out.println(msg);}});}
2.2 使用 SpringAMQP
- 引入依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.6</version></parent><!-- amqp 依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency></dependencies>
application.yml
文件中编写配置spring:rabbitmq:host: xxx.xxx.xxx.xxx port:5672virtual-host: / username: rabbit password: rabbit
- 监听消息
@ComponentpublicclassSpringRabbitListener{@RabbitListener(queues ="simple.queue")publicvoidlistenMessage(String msg){System.out.println(msg);}}
- 发送消息
@ResourceprivateRabbitTemplate rabbitTemplate;@TestpublicvoidsendTest(){// 需要发送的队列String queueName ="simple.queue";// 需要发送的消息String msg ="This is a cool message!";// 发送消息 rabbitTemplate.convertAndSend(queueName, msg);}
推荐阅读
- 深入了解 Arthas:Java 应用程序诊断利器
- 基于 AI 的数据库助手-Chat2DB
- EasyExcel 处理 Excel
- 实体映射解决方案-MapStruct
- 动态切换数据源的最佳实践
本文转载自: https://blog.csdn.net/LearnerDL/article/details/138453579
版权归原作者 DC1020 所有, 如有侵权,请联系我们删除。
版权归原作者 DC1020 所有, 如有侵权,请联系我们删除。