首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们可以为同一个java(spring)批处理作业创建多个实例吗?

我们可以为同一个java(spring)批处理作业创建多个实例吗?
EN

Stack Overflow用户
提问于 2011-11-11 10:41:18
回答 2查看 5.6K关注 0票数 1

我用石英来安排春季批作业。

作业从一个文件夹(有多个文件)读取一个文件,进行一些处理,并将其复制到另一个文件夹。

是否可以创建多个作业实例,这些实例将同时运行,读取多个文件?

我的问题是:

在春季批处理中,是否有可能生成同一作业的多个实例?我使用的是石英刻划?

EN

回答 2

Stack Overflow用户

发布于 2011-11-11 15:48:57

在Spring中,只要为每个JobParameters调用提供了不同的jobLauncher.run(),就可以启动几个作业。如果使用适当的任务执行器配置了每个作业,那么Spring配置中的jobLauncher将在一个单独的线程中生成每个作业:

代码语言:javascript
运行
复制
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
    <property name="jobRepository" ref="jobRepository" />
    <property name="taskExecutor" ref="taskExecutor" />
</bean>

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"
    p:corePoolSize="5"
    p:maxPoolSize="30" />
票数 3
EN

Stack Overflow用户

发布于 2011-11-11 10:50:02

例如,使用Quartz可以使用MethodInvokingJobDetailFactoryBean

代码语言:javascript
运行
复制
<bean id="myjob"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
        <ref bean="someBean" />
    </property>
    <property name="targetMethod" value="someMethod" />
    <!-- The concurrent property is already true by default
    <property name="concurrent" value="true" />
     -->
</bean>

引用春季文献

默认情况下,Quartz Jobs是无状态的,从而导致作业相互干扰的可能性。如果为同一个JobDetail指定了两个触发器,则可能会在第一个作业完成之前启动第二个触发器。如果JobDetail类实现了状态接口,则不会发生这种情况。第二项工作在第一项工作完成之前不会开始。若要使由MethodInvokingJobDetailFactoryBean非并发产生的作业,请将并发标志设置为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8092790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档