前面我们了用fengin客户端发送http请求
![](https://img-blog.csdnimg.cn/img_convert/cd139eebb9e8410a158d4056a1050aac.png)
![](https://img-blog.csdnimg.cn/img_convert/afab21503311efe4895c4d3395876bf7.png)
异步调用常见实现就是事件驱动模式
异步调用比同步调用的好处?
优势一:业务的解耦,以前我们直接去调另一个微服务,现在我们是通知给一个broker,第三者
之后我们支付服务还要增加新的需求,只需要订阅事件即可完成
![](https://img-blog.csdnimg.cn/img_convert/cf3b13c9ebd1a3161396f5a7c24daf19.png)
优势二:响应快,我们微服务通知到Broker就完成任务,不关心其他的
![](https://img-blog.csdnimg.cn/img_convert/1d58346a4eb0303529fe8061cec0f206.png)
优势三:不会说一个微服务提供者倒了,我们消费者就会卡在这个地方
![](https://img-blog.csdnimg.cn/img_convert/646c71409a16eba8c88bafa556e3f16f.png)
优势四:流量削峰:
![](https://img-blog.csdnimg.cn/img_convert/1ede5f3f488b04f2e2a7237a63721ad2.png)
那么异步通信的缺点:
太过于依赖broker的性能
架构复杂,业务没有明显的流程线,不好追踪管理
MQ:MessageQueue即消息队列,即broker
可以使用docker ps -a命令列出所有docker容器,包括未运行的docker容器。
docker rm -f +id可以删除对应的容器
![](https://img-blog.csdnimg.cn/img_convert/28fa19dfb730ac45870f3a132cd98557.png)
不同的虚拟主机之间逻辑分组,进行隔离
RabbitMQ中的几个概念:
•channel:操作MQ的工具
•exchange:路由消息到队列中
•queue:缓存消息
•virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组
![](https://img-blog.csdnimg.cn/img_convert/9bc1b4098bb992cc97eeb6e6a616a963.png)
基本队列模型:
一下这个demo是基于RabitMQ官方api,流程麻烦
建立连接什么的还需要硬编码到程序中 需要手动声明队列 创建channel操作