异步回调通知服务
2020-09-23 本文已影响0人
追梦小蜗牛
image.jpg
介绍:
在交易系统中,一个完整的业务流程,会涉及到各种状态的变化,有些状态还不是实时产生的;对接这个交易系统的商户们需要实时的知道每一笔交易的实时状态流转到哪里啦。这就需要做一个公共的实时的回调通知服务,用来把交易的状态变化实时的通知商户。
涉及的技术点:
spring-retry、rabbitMQ、webClient、springboot、mysql
设计图:
image.png关键点:
- spring-retry:spring retry是从spring batch独立出来的一个新功能,实现了重试和熔断;远程调用超时、网络突然中断可以重试;参数校验不合法、写操作等(要考虑写是否幂等)都不适合重试。在spring retry中可以指定需要重试的异常类型,并设置每次重试的间隔以及如果重试失败是继续重试还是熔断(停止重试)。
- rabbitMQ:MQ 全称为 Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法,即我们常说的中间件之一,而 RabbitMQ 则是 MQ 的一种开源实现,遵循 AMQP(高级消息队列协议) 协议。
- webClient:Spring5带来了新的响应式web开发框架WebFlux,同时,也引入了新的HttpClient框架WebClient。WebClient是Spring5中引入的执行 HTTP 请求的非阻塞、反应式客户端。它对同步和异步以及流方案都有很好的支持。非阻塞 I/O、反应流背压(消费者消费负载过高时主动反馈生产者放慢生产速度的一种机制)、具有高并发性,硬件资源消耗更少、同步和异步交互、流式传输支持。
总结:
技术框架有很多,特性也有很多,最终都是为了服务于业务系统的。脱离了业务系统,也就没啥大的意义,所以我们要学会组合,利用他们的优点,实现我们的需求。消息队列是个好东西,有很多的应用场景,要多加运用。多思考,多清空。