Springboot整合【RabbitMQ】
前面我讲了rabbitMQ的Maven整合,其实spring boot也是差不多的,分为几个步骤吧
ps:我就用一个简单模式来演示,其他模式自己举一反三,其实都差不多的
学东西就是要 知其然,知其所以然
1.1创建父工程maven项目,方便管理
1.2 创建消息提供者producer
创建子模块:
依赖可以在创建的时候选择也可以在也可以到后面导入,但是建议不管怎么样先引入springWeb不然后面要手写启动类,麻烦
<dependencies>
<!--rabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
修改主配置:application.yml
server:
port: 9001
spring:
application:
name: producer
rabbitmq:
host: 这里填自己的rabbitMQ所在的主机 本机就填localhost或者127.0.0.1
# 虚拟主机
virtual-host: host1
port: 5672
# 用户名
username: ktkt
# 密码
password: ktkt
创建service包编写消息发送接口
/**
* Created by IntelliJ IDEA.
* User: kt
* Date: 2020/12/7 11:17
* @author kt
*/
@Service
public class TestService {
//实例化rabbit管理模板,操作对象
@Resource
private AmqpTemplate amqpTemplate;
public void sendMsg(String msg){
//发送消息到队列
amqpTemplate.convertAndSend("queue",msg);
//发送消息到队列(订阅模式)
amqpTemplate.convertAndSend("ex1","",msg);
//发送消息到队列(路由模式) 如果第一个是交换机的名称参数二就是key
amqpTemplate.convertAndSend("ex2","b",msg);
}
}
创建controller,方便浏览器访问调试看效果
/**
* Created by IntelliJ IDEA.
* User: kt
* Date: 2020/12/7 11:10
*
* @author kt
*/
@RestController
public class TestController {
@Resource
TestService testService;
@RequestMapping("/test")
public String test(String msg) {
testService.sendMsg(msg);
System.out.println("发送消息:"+msg);
return "success";
}
}
可以开始调试了,效果就可以观察管理面板了 15672
然后我们想以用户的形式,接收到消息我们应该这么做
1.3 创建消息提供者consumer
创建子工程spring boot 项目
选择依赖(和producer一样,可以手动引入)
修改主配置:application.yml
server:
port: 9001
spring:
application:
name: producer
rabbitmq:
host: 这里填自己的rabbitMQ所在的主机 本机就填localhost或者127.0.0.1
# 虚拟主机
virtual-host: host1
port: 5672
# 用户名
username: ktkt
# 密码
password: ktkt
接下来创建一个消息接收的业务方法
/**
* Created by IntelliJ IDEA.
* User: kt
* Date: 2020/12/7 18:33
* @author kt
*/
@Service
//监听队列
@RabbitListener(queues = "queue")
public class SendService {
//表示监听者监听到之后消息传到哪? 这里我们就用到msg里
@RabbitHandler
public void receiveMsg(String msg){
System.out.println("接收到的消息:"+msg);
}
}
然后都启动,然后浏览器访问producer的接口发送,观察consumer控制台看效果!!就ok了
这是一个简单的方法,其他的方法都差不多啦!
如果觉得小编写的可以,请给小编一个免费的赞和关注吧0.0