java - 使用 Spring 在后台运行进程的推荐方法是什么?

标签 java spring spring-mvc spring-boot spring-batch

我正在使用 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/

相关文章:

java - Java 中的开源虹膜扫描库

spring - QueryDSL 动态谓词

java - 无法从 mongodb java 驱动程序连接到 MLab Mongo 数据库

java - 在gradle中运行任务后如何运行集成任务?

java - 如何创建具有两个映射字段的单独表?

java - Spring @CacheEvict 不工作

java - 为 Android 设置按钮

java - 如何正确转义该字符串?

Java 泛型方法 - extends 关键字的用法是什么?

spring - 在 Spring 验证期间包装 PropertyEditor 异常