SpringCloud中使用消息中间件rabbitmq

2019-09-30  本文已影响0人  writeanewworld

.mq运行环境centos7

1.docker拉一个rabbitmq,根据自己服务器的配置run起来

2.默认端口15672,访问下


image.png

3.新增用户、新增virtual hosts

image.png

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


image.png

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.注册 - 监听 - 消费


image.png

10、拓展
工作中遇到一个需求场景,客户请求接口,但是接口是异步的,需要先下单,然后过一段时间后返回数据。

我刚开始的想法(用伪代码大概写下):

客户下单->
try{
     return "下单成功";
}catch(Exception e){
     LOG.err...
}finally{
     /正式去下单执行后续逻辑
}

但是这里存在多个问题:一个是计费问题/ 再就是并发问题,用线程?用几个?所以直接用个消息中间件来解决了。

客户下单->
 mq收到消息,return 下单成功
 正式执行。

  mq功能:异步 解耦 削峰填谷 
上一篇 下一篇

猜你喜欢

热点阅读