20、21、22、23丨为什么框架层就要考虑分环境配置?异步处理为何要复制线程上下文信息?为你的接口添加Swagger文档;主流微服务框架概览

20

21 异步处理为何要复制线程上下文信息?

  • Spring通过Java线程池原生支持异步操作。下图是Spring支持ThreadPoolTaskExecutor简单的原理简介。
  • 内部其实是一个线程池加一个任务队列。调用方只管把任务提交给ThreadPoolTaskExecutor,任务会先进队列后台线程池观察到当前的负荷情况,如果有空闲线程就从队列中获取并执行任务,队列和线程池大小都是可以配置的。这是实现异步的标准做法。

  • 在Spring Boot中配置一个异步线程池的bean很简单,下面是Account服务中的一个样例。

  • 如果某个操作需要异步操作,那么只要在操作上加上@Async(),里面配置的参数要和前面配置的name一致

  • 在Spring Boot中使用异步调用需要注意两点
    - 首先调用方和被调用方的异步操作不能在同一个Bean中
    - 线程上下文的拷贝

posted @ 2020-03-30 11:29  bm小明  阅读(148)  评论(0编辑  收藏  举报