一,安装RabbitMQ
- 注:本教程是在win10本地docker上进行安装rabbitmq(没使用docker的可直接跳过第一部分)
不使用docker进行win本地安装rabbitmq,或者在linux虚拟机中安装rabbitmq都可以的(win10上安装docker本文不加以概述)
- 本文拉取的是rabbitmq:management版本(即包含了rabbitmq,也包含了rabbitmq的web控制界面)
- 拉取镜像
#指定版本,该版本包含了web控制页面
docker pull rabbitmq:management
- 运行rabbitmq镜像
#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
#方式二:设置用户名和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
- 查看镜像是否运行成功
docker ps
二,本地浏览器访问rabbitmq web控制器界面
- 访问地址: http://localhost:15672
- 如果是运行的默认镜像,账户密码都为: guest
三,发送消息和消费消息
- 创建一个简单的springboot项目 (使用idea创建什么依赖都不用选)
- pom.xml相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- rabbitMq与springboot整合的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
- application.yml配置rabbitmq相关参数
spring:
rabbitmq:
addresses: 127.0.0.1 #rabbitmq的地址ip(本文是在win10本地docker上安装,所以就算本地ip)
port: 5672 #rabbitmq 端口
username: guest #用户名
password: guest #密码
- 在rabbitmq web控制器页面上创建一个队列
- 在springboot项目中创建一个测试类(生产者)
/**
* @program: rabbitmq-demo
* @description:
* @author: xf
* @create: 2021-01-14 21:54
**/
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class RabbitMqTest{
//注入rabbitmq
@Autowired
private AmqpTemplate amqpTemplate;
//发送一个消息
@Test
public void sendMsg(){
log.info("开始发送消息");
//发送的消息,一般真实业务逻辑中是一个json字符串,这样传输的数据更多
String msg="hello,rabbitMq";
System.out.println("消息体:"+msg);
//发送消息 注: test2:就是刚才在web控制界面创建的队列名称(必须一致)
amqpTemplate.convertAndSend("test2",msg);
log.info("消息发送结束");
}
}
- 启动springboot项目后,在运行测试方法
控制台打印
- 查看web界面,存在一条数据
- 在springboot项目中创建一个监听器组件类(消费者)
关键注解: @RabbitListener @RabbitHandler
/**
* @program: rabbitmq-demo
* @description:
* @author: xf
* @create: 2021-01-14 21:47
**/
@RabbitListener(queues = "test2") //test2:为队列名称
@Component
@Slf4j
public class RabbitMqComponent {
@RabbitHandler
public void consumeMsg(String msg){
log.info("开始业务逻辑");
System.out.println("消费消息:"+msg);
log.info("结束业务逻辑");
}
}
- 重新启动项目,查看控制台打印
- 查看web控制器界面,消息已被消费
四,springboot项目基本结构
完成
睡了睡了