gpt4 book ai didi

java - 单个 java 进程的排队/工作线程架构

转载 作者:行者123 更新时间:2023-11-30 04:37:47 25 4
gpt4 key购买 nike

我有以下问题需要解决。

我需要编写一个java程序:

  1. 从 Web 服务读取 JSON 对象 j1,j2,...,jn。
  2. 对每个对象进行一些数字运算,得出 j1',j2',...,jn'
  3. 将对象 j1',j2',...,jn' 发送到网络服务。

步骤 1,2 和 3 的计算和空间要求可能在任何给定时间发生变化。

例如:

  1. 第 2 步处理 JSON 对象所需的时间可能会有所不同,具体取决于 JSON 对象的内容。
  2. 第 1 步中网络服务生成对象的速率可能会随着时间的推移而上升或下降。
  3. 第 3 步中使用的 Web 服务可能会积压。

为了解决上述设计问题,需要实现以下架构:

enter image description here

  1. 从外部 Web 服务读取 JSON 对象并将其放置在 Q 上
  2. 自动调整大小的工作线程池,它使用 Q 中的 JSON 对象并处理它们。处理完后,将结果对象放在第二个 Q 上
  3. 自动调整大小的工作线程池,它使用第二个 Q 中的 JSON 对象并将它们发送到使用的 Web 服务。

问题:

I am curious if there is framework which I can use to solve this problem?

注释:

  1. 我可以使用一系列组件来解决这个问题,例如使用并发包的自定义队列、线程池 - 但是我正在寻找一种允许编写此类解决方案的解决方案。
  2. 它不会存在于容器内。这将是一个 Java 进程,其入口点是 public static void main(String args[])
  3. 但是,如果有适合这种范例的容器,我想了解一下。
  4. 我可以将其拆分为多个进程,但我希望使其保持非常简单并在单个进程中。

谢谢。

谢谢。

最佳答案

尝试Apache camelSpring Integration把事情连接起来。这些是一种集成框架,将简化您与 Web 服务的交互。您需要做的是定义一条从 webservice 1 -> number cruncher -> web service 2 的路由。之间所需的路由和转换可以由框架本身处理

您可以将您的cruncher实现为 Camel 处理器。并行化你的cruncher可以通过SEDA来实现; Camel 有一个组件 this pattern 。另一个替代方案是 AsyncProcessor

我建议你先看看camel这样的框架背后的原理。他们创建的抽象与当前的问题非常相关。

关于java - 单个 java 进程的排队/工作线程架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com