我正在使用 Spring(Boot、MVC)开发 Web 应用程序,有些东西需要在后台运行,因此我不会阻止请求。
目前我正在考虑让 Spring Batch 作业每 5 分钟运行一次,并检查数据库中的表 (jobs_queue) 是否有事情要做,然后运行任务(基于表中每一行的要求) .
显然,这不是一个很好的可扩展解决方案(我认为),因为我将只有一个工作人员(如果队列中有太多工作,这个工作人员可能无法处理负载)并且它也会在每 5 分钟至少进行一次数据库查询(还要查看队列中是否有作业)。
执行此操作的更好方法是什么?
最佳答案
添加到@kotabek 的回答中,Spring Batch 能够通过消息启 Action 业。因此,您可以让 JobLaunchingMessagHandler
监听启 Action 业的请求并相应地运行它。这允许您在本地(使用直接 channel )或远程(通过一些消息传递中间件,如 Rabbit)处理此用例。您可以在此处的文档中阅读更多相关信息:http://docs.spring.io/spring-batch/reference/htmlsingle/#launching-batch-jobs-through-messages
关于java - 使用 Spring 在后台运行进程的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34863309/