我现在有一个Tomcat容器 - 在其上运行监听请求的servlet。我需要一个HTTP请求的结果是一个提交其然后被异步处理的作业队列。我希望每个“工作”到连续被保留在一个数据库用于跟踪和失败的情况下恢复。我一直在做大量的阅读。这里是我的选择(注意我必须使用一切开源的东西)。

1)JMS - 使用ActiveMQ的(但谁是在这种情况下,工作另一个servlet的消费者)

2)具有我的请求在DB创建一行。有一个始终运行的Tomcat我的容器内一个单独的servlet - 它使用Quartz调度或java.util.concurrent中不间断的处理行的工作提供的工具(使用线程池)

我向后者倾斜,因为看JMS文档让我头疼,虽然我知道它的一个更强大的解决方案,我需要相对快速地实现这一点。我不期待在任何情况下,部署此服务器的早期负载的巨额资金。

很多人说春天会是个不错的1或2。不过,我从来没有使用过春,我甚至不知道如何开始使用它来解决这个问题。如何潜水,而无需重新写我的整个项目的任何指针将是有益的。

否则,如果您可以在权衡选项1或2,这也将是有用的。

澄清:异步过程将屏幕刮第三方网站,并发送一个消息通知给原始请求者。第三方网站是有点片状和慢,这就是为什么它会作为一个异步过程(几个重试尝试内置)进行处理。我也将被从该站点拉动文件并将它们存储在S3。

有帮助吗?

解决方案

您的石英工作并不需要是一个Servlet!你可以坚持在DB传入的作业,并有石英开始时,你的主要的Servlet启动。石英作业可以是一个简单的POJO并检查DB,用于周期性的任何作业。

不过,我建议看看春天。这并不难学,而且易于安装内Tomcat的的。你可以找到很多的 Spring参考文档中良好的信息。它有石英集成,这是比手动操作的方式更容易。

其他提示

,这将不需要您做了很多设计和编程的合适解决方案是创建以后需要在servlet的对象,并将其序列化到一个字节数组。然后把在BLOB字段在数据库中,并用它来进行。

然后,你的处理线程可以只读取其中的内容,反序列化并与ressurrected对象工作。

不过,您可以通过描述得到更好的答案是什么,你需要你的系统真正做到:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top