有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

单java进程的多线程队列/工作线程体系结构

我有以下问题要解决

我需要编写一个java程序:

  1. 读取JSON对象j1,j2,。。。,来自web服务的jn
  2. 对每个对象进行一些数字运算,得出j1',j2',。。。,jn'
  3. 发送对象j1',j2',。。。,jn’到web服务

步骤1、2和3的计算、空间要求在任何给定时间都可能有所不同

例如:

  1. 根据JSON对象的内容,在步骤2中处理JSON对象所需的时间可能会有所不同
  2. 在步骤1中,webservice生成的对象的速率可以随时间而上升或下降
  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(字符串args[])
  3. 然而,如果有一个容器适合这个范例,我想了解它
  4. 我可以将其分为多个过程,但是我希望它非常简单,并且在一个过程中

谢谢

谢谢


共 (1) 个答案

  1. # 1 楼答案

    试着Apache camelSpring Integration把事情联系起来。这些是一种集成框架,将简化您与Web服务的交互。您需要做的是从webservice 1定义一个路由;数字运算器->;网络服务2。这两者之间所需的路由和转换可以由框架本身处理

    你可以将你的cruncher实现为骆驼处理器。 并行化你的cruncher可以通过SEDA实现;Camel有一个用于this pattern的组件。另一个备选方案是AsyncProcessor

    我想说的是,你首先来看看camel等框架背后的原则。他们创建的抽象与手头的问题非常相关