Spring批处理管理:通过web GUI计划新作业

Spring批处理管理:通过web GUI计划新作业,spring,quartz-scheduler,spring-batch,spring-batch-admin,Spring,Quartz Scheduler,Spring Batch,Spring Batch Admin,一个关于Sprint批处理管理的新手问题 我的要求是,用户应该能够通过web UI安排新作业(传递作业功能的一些参数)。这些作业应该是持久性的、重复性的,并且可以取消或删除。此外,还可以为上次运行的作业生成报告,并列出所有现有作业及其下次运行日期 也许我最重要的要求是,这应该是“动态的”,不需要重新部署web应用程序或重新启动服务器 这可以使用SpringBatch Admin实现吗(我看到指南中提到了上传XML以添加作业,但这似乎很乏味,如果有API,为什么我们不能通过Batch Admin

一个关于Sprint批处理管理的新手问题

我的要求是,用户应该能够通过web UI安排新作业(传递作业功能的一些参数)。这些作业应该是持久性的、重复性的,并且可以取消或删除。此外,还可以为上次运行的作业生成报告,并列出所有现有作业及其下次运行日期

也许我最重要的要求是,这应该是“动态的”,不需要重新部署web应用程序或重新启动服务器


这可以使用SpringBatch Admin实现吗(我看到指南中提到了上传XML以添加作业,但这似乎很乏味,如果有API,为什么我们不能通过Batch Admin Web UI动态创建作业)?或者JDK Timer或Quartz支持它吗?

一旦创建了作业,它就不能被删除,但会被删除。允许从数据库中删除是一项危险的操作,因为Spring批处理可能已经开始执行作业,但数据库尚未更新。如果此时有人删除了作业,则会出现不一致


中介绍了如何安排新作业。不可能创建新类型的作业,因为作业通常具有复杂的配置,在加载Spring上下文时只解析一次。

动态部署(动态)作业和配置,无需重新启动服务器,是我们在Trooper Batch Profile中实现的一个功能-它不完全是Spring Batch admin,而是基于它构建的。您继续使用Spring批处理编写作业,只需在Trooper中更改容器,您就可以使用其批处理配置文件运行时。屏幕截图和功能如下:

我认为我们可以通过SBA部署每个spring批处理作业。我的意思是,每个批处理作业都将编译为war文件。我们将它们一起部署在服务器中。通过这种方式,我们有以下访问URL来监视每个作业:

h t t p://bactchjobserver/job1

h t t p://bactchjobserver/job2

h t t p://bactchjobserver/job3

h t t p://bactchjobserver/job4

但缺点是每个war填充肯定包含lib文件,这使得每个war文件的大小都像10MB

同时,我尝试手动将new-job.xml添加到war文件\WEB-INF\classes\META-INF\spring\batch\jobs,并将new-job.jar添加到war文件\WEB-INF\lib,而不停止JBoss。它起作用了。新作业可以在SBA UI中显示并可运行


但显然,这将导致大量的维护和故障排除。它不可实施。

谢谢。我想确定是否可以通过Web GUI调度作业,以及Spring Batch、JDK Timer或Quartz Scheduler是否支持。到目前为止,我所看到的是,在一个web应用程序中,所有这些作业都需要事先“配置”,并且需要“重新部署”web应用程序,而不是“动态”添加作业。可以计划(=启动)一个新的作业实例。它将由任务执行器运行,任务执行器可以是异步的(您应该在Spring配置中定义)。Quartz用于按计划运行作业,您通常不需要Spring管理控制台来运行它们,但可能需要查看执行结果。作业应该预先配置好应该如何处理数据(读、块、修改、写),但实际数据(文件、URL等)可以通过参数传递。当然,我们可以使用参数来调整处理本身,解释参数的含义是我们的工作任务。再次感谢!您的回答帮助我现在了解到,最终我们需要Quartz或Cron按照计划运行作业,Spring Batch负责实际的执行过程。您知道我们是否可以通过Quartz的GUI动态调度作业吗?到目前为止,我知道您仍然需要使用属性文件对其进行预配置