gpt4 book ai didi

postgresql - Camunda Cockpit 和 Rest API 关闭但应用程序启动/JobExecutor 配置

转载 作者:行者123 更新时间:2023-11-29 11:35:46 27 4
gpt4 key购买 nike

我们的 Camunda Orchestrator 正面临重大事件。当我们达到 100 个正在运行的流程实例时,Camunda Cockpit 会花费很长时间并且从不响应。我们在调用/app/engine/时遇到同样的问题。从 RabbitMQ 使用的消息很少,然后一切都停止了。

然而,应用程序并未关闭。我怀疑是流程引擎配置问题,因为无法获取作业执行程序日志。

当我将 JobExecutorActivate 设置为 false 时,Cockpit 和队列消费的所有事情都会正常进行,但进程会在第一个子进程结束时停止。

我们有这个日志循环不间断:

2018/11/17 14:47:33.258 DEBUG ENGINE-14012 Job acquisition thread woke up
2018/11/17 14:47:33.258 DEBUG ENGINE-14022 Acquired 0 jobs for process engine 'default': []
2018/11/17 14:47:33.258 DEBUG ENGINE-14023 Execute jobs for process engine 'default': [8338]
2018/11/17 14:47:33.258 DEBUG ENGINE-14023 Execute jobs for process engine 'default': [8217]
2018/11/17 14:47:33.258 DEBUG ENGINE-14023 Execute jobs for process engine 'default': [8256]
2018/11/17 14:47:33.258 DEBUG ENGINE-14011 Job acquisition thread sleeping for 100 millis
2018/11/17 14:47:33.359 DEBUG ENGINE-14012 Job acquisition thread woke up

还有这个日志(用于队列消费):

2018/11/17 15:04:19.582 DEBUG Waiting for message from consumer. {"null":null}
2018/11/17 15:04:19.582 DEBUG Retrieving delivery for Consumer@5d05f453: tags=[{amq.ctag-0ivcbc2QL7g-Duyu2Rcbow=queue_response}], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.0.1:5672/,4), conn: Proxy@77a5983d Shared Rabbit Connection: SimpleConnection@17a1dd78 [delegate=amqp://guest@127.0.0.1:5672/, localPort= 49812], acknowledgeMode=AUTO local queue size=0 {"null":null}

环境:Spring Boot 2.0.3.RELEASE,带有 PostgreSQL、RabbitMQ 的 Camunda v7.9.0

Camunda BPM 监听并推送到 165 RabbitMQ 队列。

配置:

# Data source (PostgreSql)
com.campDo.fr.camunda.datasource.url=jdbc:postgresql://localhost:5432/campDo
com.campDo.fr.camunda.datasource.username=campDo
com.campDo.fr.camunda.datasource.password=password
com.campDo.fr.camunda.datasource.driver-class-name=org.postgresql.Driver
com.campDo.fr.camunda.bpm.database.jdbc-batch-processing=false
oms.camunda.retry.timer=1
oms.camunda.retry.nb-max=2

SpringProcessEngineConfiguration :

@Bean
public SpringProcessEngineConfiguration processEngineConfiguration() throws IOException {
final SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
config.setDataSource(camundaDataSource);
config.setDatabaseSchemaUpdate("true");
config.setTransactionManager(transactionManager());
config.setHistory("audit");
config.setJobExecutorActivate(true);
config.setMetricsEnabled(false);
final Resource[] resources = resourceLoader.getResources(CLASSPATH_ALL_URL_PREFIX + "/processes/*.bpmn");
config.setDeploymentResources(resources);

return config;
}

Pom 依赖:

 <dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
</dependency>

我很确定我的作业执行器配置是错误的。

更新:

我可以通过将 JobExecutorActivate 设置为 false 来启动 cockpit 并让 Camunda 使用消息,但进程仍在第一个作业执行程序所需的步骤处停止:

config.setJobExecutorActivate(false);

感谢您的帮助。

最佳答案

首先:如果您的流程包含异步步骤(作业),那么它将暂停。激活 jobExecutor 只会说 camunda 应该管理这些工作的工作方式。如果禁用执行程序,您的进程仍将停止,并且由于没有人会执行它们,它们将保持停止状态。 禁用作业执行仅在测试期间或当您有多个节点并且只有其中一些节点应该进行处理时才有意义。

关于您的主要问题:作业执行器使用线程池。根据您的描述,池中的所有线程很可能永远阻塞,因此它们永远不会完成也永远不会返回,这意味着您的系统被卡住了。

不久前我们在使用 smtp 服务器时发生了这种情况,连接无限超时,因此线程一直在等待,尽管机器不可用。

由于 camunda 中的工作执行本身非常可靠且经过良好测试,我建议您仔细检查您在委托(delegate)中所做的一切,如果幸运的话(我是对的),您会找到等待的地方永远……

关于postgresql - Camunda Cockpit 和 Rest API 关闭但应用程序启动/JobExecutor 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com