【问题标题】:Spring WebFlux create pool of no-blocking threadsSpring WebFlux 创建无阻塞线程池
【发布时间】:2018-06-09 07:30:28
【问题描述】:

我决定用 Java 重写我的 Web 应用程序(以前是在 Python 上)。 在我的应用程序中,我使用了无阻塞 I/O,我有工作池(Celery + Eventlet 线程),我在其中传递由数百个 API 调用组成的任务。

现在我正在使用 Spring WebFlux,但我不明白如何创建一个工作池来将我的任务传递给该池,然后在获得结果并进行一些计算之后。

(我知道创建 ThreadPoolTask​​Executor 的可能性,但线程是阻塞线程)

【问题讨论】:

    标签: spring spring-webflux


    【解决方案1】:

    如果您使用的是非阻塞 API,则无需在特定线程上安排任务 - Reactor 正在为您做这件事。使用 Spring WebFlux,用于处理工作的线程由 Reactor 管理,或者它正在重用 Netty 线程。

    查看Schedulers and threading parts of the reactor reference documentation

    【讨论】:

    • 布莱恩,你能帮帮我吗?假设(为了简洁起见)我在控制器中为每个传入的用户请求执行 600 次 API 调用,它们彼此非常相似,之后我需要获取执行结果并进行一些计算,然后才返回结果. 1)我怎样才能按整个组提出类似的请求并按整个组(流 API 的种类)获得结果(Flux)? 2)如果我在不使用工作池的情况下对每个控制器提出如此大的请求,并在控制器内部要求结果,是否会使反应器在同一个内部执行池中传递任务?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2016-09-26
    • 2023-02-02
    • 2019-11-21
    相关资源
    最近更新 更多