如何正确配置JBPM以使用多个线程

这是一个棘手的问题:

我将JBPM与Jboss一起使用,并希望对其进行配置,使其能够并实际使用5个线程(本身)。我的代码中包含所有相关参数的“ jbpm.cfg.xml”文件。这是其内容的概述:

Some parameters...

<bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
    <field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
    <field name="name"><string value="JbpmJobExecutor" /></field>
    <field name="nbrOfThreads"><int value="5" /></field>

    <field name="idleInterval"><int value="5000" /></field>
    <field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
    <field name="historyMaxSize"><int value="20" /></field>
    <field name="maxLockTime"><int value="600000" /></field> <!-- 10 minutes -->
    <field name="lockMonitorInterval"><int value="60000" /></field> <!-- 1 minute -->
    <field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
</bean>

这是由自动生成的模板发出的(或者我认为),我们在这里所做的唯一一件事就是将“ nbrOfThreads”字段的值从1更改为5(以触发多线程)。

这样做之后,我们使用maven生成了Web应用程序的可运行对象并进行了部署。我想确保我启动的作业实际上是同时启动的(这是我们希望JBPM采取的行为),但我有直觉,实际上并没有这样做,因为我没有注意到服务器性能在时间方面的任何差异从现在开始(直到参数nbrOfThreads设置为“ 1”)才能实现这些目标。我进行了一个线程转储(在运行作业的同时)并获得以下输出:

2019-11-12 15:20:57
Full thread dump Java HotSpot(TM) 64-Bit Server VM (16.3-b01 mixed mode):

#Nothing here,which would mean that no thread is running at the moment ?

"http-0.0.0.0-8880-2" daemon prio=10 tid=0x00007f6f94039000 nid=0x4776 runnable [0x00007f6f91452000]
   java.lang.Thread.State: RUNNABLE

 #Many other threads (irrelevant,to my mind)    

"JbpmJobExecutor@127.0.0.1:5" prio=10 tid=0x00007f701cc09800 nid=0x1e76 in Object.wait() [0x00007f6f90a87000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00007f6fdd162b88> (a org.jbpm.job.executor.JobExecutor)
    at org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:70)
    - locked <0x00007f6fdd162b88> (a org.jbpm.job.executor.JobExecutor)

   Locked ownable synchronizers:
    - None

"JbpmJobExecutor@127.0.0.1:4" prio=10 tid=0x00007f701cb48000 nid=0x1e74 in Object.wait() [0x00007f6f90b88000]
 #Same as above

"JbpmJobExecutor@127.0.0.1:3" prio=10 tid=0x00007f701cb47000 nid=0x1e71 in Object.wait() [0x00007f6f90c89000]
 #Same as above

"JbpmJobExecutor@127.0.0.1:2" prio=10 tid=0x00007f701da3f000 nid=0x1e6f in Object.wait() [0x00007f6f90d8a000]
 #Same as above

"JbpmJobExecutor@127.0.0.1:1" prio=10 tid=0x00007f701cb39000 nid=0x1e6c in Object.wait() [0x00007f6f90e8b000]
 #Same as above

如果我的理解很好:线程(根据配置文件称为JbpmJobExcecutor)已正确实例化并可以运行,但是上述作业不会触发其中任何一个,对吗?

我的问题是: -为什么不使用JbpmJobExecutor线程启动作业(每当其中一个引发异常时,就会显示一条消息,显示“ foo无法推进JBPM进程”,因此它们肯定依赖于JBPM -如何确定哪个线程真正在支持工作 -为什么转储文件中没有任何正在运行的线程,不应该至少其中之一?按照本教程的规定:https://dzone.com/articles/how-to-read-a-thread-dump在转储文件中的入门信息和线程列表之间应该有一个部分,显示在进行转储时正在运行的线程的数组。类似于“线程类SMR信息:blablabla {thread1,thread2等}。但是在我的身上没有迹象表明,为什么?

很抱歉,问题的长度,我想尽可能准确,无法想到其他任何方式来清楚地解释。希望有人会提出一些对我们大多数人有用的解释。

谢谢!

ai520119 回答:如何正确配置JBPM以使用多个线程

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3116236.html

大家都在问