如果我想在多用户环境(通过 tomcat-servlet)中运行一个流程(完成此流程所需的时间以小时为单位),哪个更好地实现此流程? 1) 在线程中或 2) 在 JMS 中 有什么优点和缺点?
最佳答案
不确定您到底如何设想使用 JMS,通常的做法是让客户端将请求弹出到队列中,并让一些(可配置的)工作线程拉出请求并为它们提供服务。就我而言,我有一个 MDB 作为让这些工作线程运行的机制 - 但这只是一个实现细节。
所以我不认为线程和 JMS 是替代方案,更多的是 JMS 为您提供了一种使用线程的可控方式。您几乎肯定需要避免同时处理太多请求,因此从概念上讲您需要队列,也可以使用 JMS 来实现这一点。
需要弄清楚各种细节,例如如何传达结果,确保浏览器不会闲置几个小时。某种 Ajax 轮询,或者 Comet 推送?
另一个想法 - 单个处理 block 需要几个小时?这可能会受益于分解为多个步骤(可能再次由 JMS 队列调解)。这样,崩溃就不会让一切回到原点。
关于tomcat - 线程和JMS哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211857/