【问题标题】:Can I run a batch jobs on another dedicated thread pool?我可以在另一个专用线程池上运行批处理作业吗?
【发布时间】:2017-04-13 22:35:30
【问题描述】:

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

所以在我的情况下,我可以交替使用 batchspecial 线程池,但不能同时用于不同的工作。

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

【问题讨论】:

    标签: java wildfly java-ee-7 jsr352


    【解决方案1】:

    我认为您不能为每个作业指定批处理线程池。但是,您可以通过在应用程序存档中使用 jboss-all.xml 来为每个部署指定一个自定义线程池。见WildFly Batch Subsystem Configuration Docs

    【讨论】:

      【解决方案2】:

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

      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-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 2011-08-10
        相关资源
        最近更新 更多