初识MQ
同步通信中存在的问题
基于feign的调用的同步通信问题
每个服务都需要之前的业务完成才能调用,造成性能下降,吞吐量下降。当某个服务阻塞,会将整个应用阻塞。
解决方案
事件驱动
服务的层级之间通过订阅的方式,通过broker,上层发布时间只需通知下层开启服务
优点:解耦,性能提升,不用担心级联失败,流量削峰
缺点:依赖broker,架构更加复杂.
并发高采取异步通信
MessageQueue
与事件趋同架构中的Broker作用相同
四种技术的区别
常用:rabbitMQ 、RocketMQ 和kafka
rabbitMq快速入门
Docker中
常见消息模型
操作流程
基本消息队列
SpringAMQP
AMQP业务间传递消息的开放标准
SpringAMQP实现了该规范
简化rabbitMQ的开发
提供:
监听器容器
发送和接受Rabbittemplate
rabbitadmin用于自动声明队列交换和绑定
实现步骤
直接放到父工程
监听simple。queue
springAMQP实现工作队列
使用多个消费者,处理消息队列中的事件
修改控制欲取消息的上限,处理一条拿一条
发布订阅模式交换机队列
允许将同一消息发送给多个消费者
fanout exchange
交换机每个消息发送给绑定的queue
.
路由模式
根据规则将消息发送给制定的queue
话题模式
routingkey必须要用多个单词以.分割
springAMQP消息转换器
接受