单个java进程的队列/工作线程体系结构
我有以下问题要解决 我需要编写一个java程序:单个java进程的队列/工作线程体系结构,java,multithreading,queue,jms,message-queue,Java,Multithreading,Queue,Jms,Message Queue,我有以下问题要解决 我需要编写一个java程序: 从web服务读取JSON对象j1、j2、…、jn 对每个对象进行一些数字运算,得出j1',j2',jn' 将对象j1',j2',…,jn'发送到web服务 步骤1、2和3的计算、空间要求在任何给定时间都可能有所不同 例如: 在步骤2中处理JSON对象所需的时间可能因JSON对象的内容而异 在步骤1中,webservice生成的对象的速率可以随时间而上升或下降 步骤3中的消费web服务可能会被积压 为了解决上述设计问题,我们希望实现以下体系结构:
谢谢。我不确定你的文章的最后一个问题是什么,但你有一个合理的设计概念。我要问你的一个问题是,你处在什么样的环境中?您是在JavaEE容器中还是仅仅是一个简单的独立应用程序 如果您在一个容器中,那么让消息驱动bean处理JMS队列比拥有一个工作线程池更有意义 如果在您自己的容器中,您自己管理线程池会更有意义。有了这一点,我也会考虑运行单独的应用程序,将工作从队列中删除,这将为您提供更好的缩放架构。如果有需要,您可以添加更多的机器,让更多的工人指向一个队列。尝试或将事情连接起来。这些是一种集成框架,将简化您与Web服务的交互。您需要做的是从WebService1->NumberCruncher->WebService2定义一个路由。这两者之间所需的路由和转换可以由框架本身处理 您可以将cruncher实现为骆驼处理器。 并行化你的cruncher可以通过以下方式实现:;Camel有一个用于的组件。另一个备选方案是
我想说的是,您首先来看看camel等框架背后的原则。他们创建的抽象与手头的问题非常相关。对此感到抱歉。。。一定是我的大脑太累了。非常感谢@Jeff,我会根据你的输入编辑这个问题并加以完善,但基本上是:1。没有集装箱2。想要保持简单:据我所知,没有任何一个一站式框架,但可以将一些框架链接在一起。你可以使用一个框架,例如用于消费和推送web服务,以及用于线程池和自动增长。嗯,@mzzzzb,你认为Twitter Storm如何符合要求?@user1172468,恐怕我对Storm一无所知。只是调查了一下,看起来很有趣,没有什么好建议的。还有一件事要学:)