The REST Connector sends only one request at a time for the entire process

Hi,

I am testing by using REST Connector to orchestrate the process. My issue lies in the Connector, which sends only one requests to the API at a time. And if Task 1 has messages to send, Task 2 cannot begin its independent sending process until Task 1 is complete. Upon further examination, I’ve discovered that this issue not only impacts the current process but also affects other processes that utilize REST Connect.

For testing purposes, I have set up two simple APIs to receive messages from Camunda. The first API intentionally waits for 10 seconds before completing its task. As you can observe from the image, despite having four messages to send, only one message was actually sent to my API. The Connector is waiting to receive a response from my API before it can proceed to send the second message.

image

Hi @Larry,

Could you please provide more information about your environment?

  1. Are you using self-managed or SaaS?
  2. Which versions are you using?

Hi @mark.farkas ,

For my testing mentioned above, I am using a Self-Managed instance, and the version is 8.2.5.

Hi @Larry ,

The Spring Zeebe properties used by default would allow you to execute REST connectors parallelly. The default values are:

zeebe.client.worker.max-jobs-active=32
zeebe.client.worker.threads=10

But this default config is only present in the docker images.

Do you use the docker images or do you use your own runtime bundle with Maven using our spring-boot-starter-camunda-connectors?

Hi @mark.farkas ,
Thank you for your response. I am using the connectors-bundle image in my local environment.
From my understanding, I should add the configuration as environment variables for the connector container, correct?

Hi @Larry ,
Yes, please add the configurations mentioned above either as environment variables or as properties in the properties file.

Hi @mark.farkas ,
Thank you for your response. I have tested it, and it works. However, I have another question regarding the configuration zeebe.client.worker.threads . If I have two different workflows, with 100 messages on workflow A and 100 messages on workflow B, does this mean that workflow B has to wait for workflow A to complete all its messages before executing? Is that correct?

Could this potentially create dependencies between different workflows?

Hi @Larry ,
The assumption is basically correct. Zeebe will process as many processes parallelly as the value of the zeebe.client.worker.threads property (because it creates as many threads for execution). Let’s assume this value is 32. This means if you have 100 process instances on process definition A, and 100 on process definition B, Zeebe will process 32 of them parallelly, and the rest has to wait, but you cannot tell which 32 will be processed first (can be any combination of process definition A and B).

Hi @mark.farkas ,
Thank you for your clarification. It’s very clear now.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.