.mq运行环境centos7
1.docker拉一个rabbitmq,根据自己服务器的配置run起来
2.默认端口15672,访问下

3.新增用户、新增virtual hosts

4.点击某用户给用户分配权限,要不然连不上

5.properties格式配置文件中的配置信息
spring.rabbitmq.host=47.110.81.**
spring.rabbitmq.port=5672
spring.rabbitmq.username=***
spring.rabbitmq.password=***
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.virtual-host=***
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.template.mandatory=true
spring.rabbitmq.template.retry.enabled=true
#注意port是5672 不是15672
6.pom文件中引入依赖
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.1</version>
</dependency>
7.新增队列
1)、在操作界面添加个
2)、@RabbitListener(queuesToDeclare = @Queue("queue"))
8.引入amqpTemplate
@Autowired
private AmqpTemplate amqpTemplate;
9.注册 - 监听 - 消费

10、拓展
工作中遇到一个需求场景,客户请求接口,但是接口是异步的,需要先下单,然后过一段时间后返回数据。
我刚开始的想法(用伪代码大概写下):
客户下单->
try{
return "下单成功";
}catch(Exception e){
LOG.err...
}finally{
/正式去下单执行后续逻辑
}
但是这里存在多个问题:一个是计费问题/ 再就是并发问题,用线程?用几个?所以直接用个消息中间件来解决了。
客户下单->
mq收到消息,return 下单成功
正式执行。
mq功能:异步 解耦 削峰填谷
网友评论