0

我在执行并发操作时遇到了 Camunda 并发问题。在多个请求的情况下,当我们设置一个具有多个实例的服务任务的变量时,在另一个服务任务中,我们得到的是部分数据。但是,在任何服务任务中获取 Camund 变量时,一次请求一个不会导致任何问题。

下面是我们的用例: 我们使用 rabbitMQ 进行消息传递。

1. 收到消息:在启动流程引擎的同时,使用队列中的消息并设置 Camunda 的所有变量。

注意rabbitMQ 消费者的并发数为 5。

2. 任务 1:当我们向 rabbitMQ 生产者发出多个请求时,此服务任务没有获取所有变量,即使 rabbitMQ 消费者一次消费并发 5 个请求,但 Camunda 无法根据并发请求获取所有这些变量。

注意:一次一个请求是从 Camunda 变量中获取所有数据。

3. 任务 3:同样的问题也发生在任务 2 中。

这种行为是随机的,有时在任务 1 或任务 2 中,有时也可以正常工作。

在此处输入图像描述

4

1 回答 1

0

如果我理解正确,一些事件是从 rabbitMQ 创建排队的项目,而这个事件又会在 Camunda 中启动进程。如果是这种情况,请考虑使用在 rabbitMQ 队列中创建项目的事件通过 RestAPI 在 Camunda 中创建直接进程。考虑在进程的任务 1 上使用外部任务,这样 Camunda 会同时执行编排和队列功能,从而无需使用 rabbitMQ。

于 2019-12-26T10:56:21.297 回答