是否可以在另一个专用线程上运行批处理作业(JSR-352批处理)?
在我的应用程序中,我有几个任务,我想在另一个专用线程池上执行。此外,我还要在默认的一半线程上执行任务(在Wildfly standalone.xml文件中配置默认线程池)。
不幸的是,到目前为止,我只能为整个机制设置一个新的线程池:
<subsystem xmlns="urn:jboss:domain:batch-jberet:1.0">
<default-job-repository name="in-memory"/>
<default-thread-pool name="batch | special"/>
<job-repository name="in-memory">
<in-memory/>
</job-repository>
<thread-pool name="batch">
<max-threads count="10"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
<thread-pool name="special"> //new pool
<max-threads count="5"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
</subsystem>
所以在我的情况下,我可以互换使用批次或特殊线程池,但不能用于不同的工作。
总之,我想设置每个作业的线程池
答案 0 :(得分:1)
我不认为您可以为每个作业指定批处理线程池。但是,您可以使用应用程序归档中的jboss-all.xml为每个部署指定一个自定义线程池。请参阅WildFly Batch Subsystem Configuration Docs。
答案 1 :(得分:0)
不,不可能为每个作业定义线程池。但是您可以定义应用程序将使用哪个批处理默认线程池。
定义一个额外的线程池:
false
使用
创建webapp / WEB-INF / jboss-all.xml <subsystem xmlns="urn:jboss:domain:batch-jberet:1.0">
...
<thread-pool name="testpool">
<max-threads count="10"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
</subsystem>