【问题标题】:How to build asynchronous data loading with simple configuration如何通过简单的配置构建异步数据加载
【发布时间】:2020-06-05 01:17:07
【问题描述】:

我的网络应用程序中有一个进程,它只是一系列 CRUD 请求。订单通常是严格的,唯一的区别是每个进程的 ID 都不同。我想做“异步”数据加载。例如:

  1. 用户提出第 1 步的请求。
  2. 服务器向他/她提供响应,一旦服务器建立完整的响应,它就开始为步骤 2、3、5... 构建数据并将其放入缓存中。

我的问题是:您能建议任何使其简单易读的机制吗?这是'主要要求。 Spring对此有什么帮助吗? (WebFlux 不太适合架构)

【问题讨论】:

  • 如果你使用的是SpringBoot架构,你可以使用注解@Async。这使得它非常简单
  • 既然你提到了,顺序是必要的,这意味着首先选择的进程应该先完成,然后处理器可以选择任何其他进程,为此你可以设置线程数(在 threadpoolexecutor 中)使用 spring 异步功能时为 1

标签: java spring multithreading threadpool


【解决方案1】:

我觉得你可以用producer-consumer design pattern

例如。
1. 获取客户的请求,执行步骤 1。
2.响应客户端。
3. 创建task entity,然后将其添加到task queue
4. Http工作线程结束。
5. 在另一个线程中执行步骤 2-N。并将结果放入缓存中。

对于框架,akka 是一个不错的选择。 RxJava 可能也不错。

而且你可以自己实现。

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多