2

是否可以在另一个专用线程上运行批处理作业(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>

所以在我的情况下,我可以互换使用批处理特殊线程池,但不能一起用于不同的工作。

总之,我想为每个作业设置线程池

4

2 回答 2

1

我认为您不能为每个作业指定批处理线程池。但是,您可以通过在应用程序存档中使用 jboss-all.xml 来为每个部署指定一个自定义线程池。请参阅WildFly 批处理子系统配置文档

于 2017-04-14T01:35:15.177 回答
0

不,不可能为每个作业定义线程池。但是您可以定义您的应用程序将使用哪个批处理默认线程池。

  1. 定义一个额外的线程池:

    <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>

  2. 使用创建 webapp/WEB-INF/jboss-all.xml

    <jboss xmlns="urn:jboss:1.0"> <batch xmlns="urn:jboss:batch-jberet:1.0"> <thread-pool name="testpool"/> </batch> </jboss>

于 2018-04-16T09:31:17.977 回答