up:: SpringCloud之RabbitMQ设计者模式
说明:
使用时机:流量大或者接口调用慢的时候,使用RabbitMQ更好,因为其是异步的。。。
以前使用Feign进行库存返还
是在取消订单操作的时候:
现在改用RabbitMQ设计模式,弄清楚谁是生产者,谁是消费者。
正式使用MQ开发返还库存功能
引入依赖
我们下单是在订单模块,在此模块添加MQ的依赖
同理,消费者商品模块也需要添加此依赖。。。
我们生产者是订单模块,消费者是商品模块。。。
添加配置
同理,生产者与消费者模块都要添加此配置。
接下来开发交换机与队列
配置MQ的交换机和队列
说明:
注意:这里Queue的导包问题,不是Java.util的包。。。。
路由键什么玩意?
交换器根据消息携带的路由键,来决定消息交给哪个队列。交换机根据这个绑定规则来交给队列以后,消费者就可以连接队列取出消息。
单播模式根据路由键把消息派发到一个指定队列。
广播模式不管路由键,将消息派发给对应的绑定了交换器的所有消息队列。
topic模式是根据路由键的规则匹配,有选择性的进行广播。
Routing Key就是路由规则,消息对应的队列。路由键来规定。
SpringBoot整合RabbitMQ之Fanout Exchange扇形(广播式)交换机(学习总结)-CSDN博客
首先:路由键需要用在在交换机和队列创建之后的相互绑定。
其次:发布数据的时候需要在某个交换机里面填写路由键,然后写上要发送的消息内容。
最后:路由键就可以找到被绑定的相应的队列来接收消息,get message那个就可以接收消息,然后里面同样看得到路由键和交换机。
可继续参考rabbitmq的routingkey的作用_张超帅的博客-CSDN博客_routingkey
配置生产者,发送消息
说明:
利用rabbitTemplate(import org.springframework.amqp.rabbit.core.RabbitTemplate;需要在pom.xml中导入amqp的依赖)的convertAndSend方法就可以发送。
配置消费者,接收消息
来到商品模块,新建消费者类:
说明:
生产者更新库存
开始测试
大坑: guest只能从127.0.0.1使用,我们使用的是虚拟机里的RabbitMQ服务,所以改掉用户名和密码,用户名为admin,密码为password