我在Java EE应用程序中工作,我希望一些Web服务并行执行。
我想知道两种不同方法的优缺点:
ADDED
这是应用程序需要做的事情:
应用程序已通过MDB完成,但我正在考虑重构。
今天的情景:
//CALLER CLASS
FOREACH INTEGRATION
PUT MESSAGE INTO A QUEUE AND STORE AN ARRAY OF CORRELATION_IDs
END
THREAD.SLEEP(X) // SOMETIME FOR INTEGRATION TO FINISH
WHILE (true){
GET RESPONSE FROM THE RESPONSE QUEUE FOR EACH INTEGRATION USING THE CORRELATION PREVIOUSLY STORED
}
//MDB CLASS
HAS A HUGE SWITCH CASE THAT PROCESS EACH INTEGRATION
RETURN THE RESULT INTO THE RESPONSE QUEUE;
问题:
提前致谢
答案 0 :(得分:0)
jms专业人士:您可以拥有持久性,可以连接到现有的基础架构 jms cons:似乎很重,只能用作调度员
手动并发缺点:好吧,它的手册。并行编程很困难。一些网络服务器(特别是云)可能会禁止创建自己的线程
不确定你想要做什么,但默认情况下,网络服务器并行处理请求,所以也许你不需要其他任何东西?
答案 1 :(得分:0)
无论您采用何种解决方案,您最终都需要应对突发的流量。 JMS / MDB突发由队列有效控制。还需要考虑的一点是,队列可以成为持久性,因此它将在服务器重启后继续存在。队列也可以分布在许多服务器上,为您提供水平可伸缩性。
线程方法当然可以更快地开发,测试和部署。但是,我会考虑使用BlockingQueue,这样你的线程就不会运行了。