我目前有一个 tomcat 容器——在其上运行的 servlet 正在侦听请求。我需要将 HTTP 请求的结果提交给作业队列,然后将其异步处理。我希望每个“作业”在数据库中连续保存,以便在发生故障时进行跟踪和恢复。我一直在做很多阅读。这是我的选择(注意我必须使用开源的东西)。
1)JMS——使用ActiveMQ(但在这种情况下,谁是工作的消费者另一个servlet?)
2)让我的请求在数据库中创建一行。在我的 Tomcat 容器中有一个单独的 servlet,它始终运行——它使用 Quartz 调度程序或 java.util.concurrent 中提供的实用程序将行作为作业连续处理(使用线程池)。
我倾向于后者,因为查看 JMS 文档让我很头疼,虽然我知道它是一个更强大的解决方案,但我需要相对快速地实现它。在任何情况下,我都没有预料到在部署此服务器的早期会有大量负载。
很多人说 Spring 可能适用于 1 或 2。但是我从未使用过 Spring,我什至不知道如何开始使用它来解决这个问题。任何关于如何深入研究而不必重新编写我的整个项目的指示都会很有用。
否则,如果您可以权衡选项 1 或 2,那也很有用。
澄清:异步过程是屏幕抓取第三方网站,并向原始请求者发送消息通知。第三方网站有点不稳定和缓慢,这就是为什么它将作为异步过程处理(内置多次重试尝试)。我还将从该站点提取文件并将它们存储在 S3 中。