Site specific camunda job executors

Hello everyone,

I have sort of homogeneous and heterogeneous(hybrid) camunda setup which is site specific.

Site A has 4 nodes of camunda containers and site B also has same number of camunda containers. All the camunda containers in site A and site B point to the same database.

I want to have the job executor which can be site specific. Meaning job created by any of the node(container) in site A can be acquired by any of the container present in site A.

For example, site A has 4 nodes/container containerA1, containerA2, containerA3 and containerA4. Similarly site B has 4 nodes/containers containerB1, containerB2, containerB3, containerB4. Lets say, a job is created by containerA1, the same job can be acquired by any of the containers present in site A i.e containerA1 or containerA2 or containerA3 or containerA4, but neither of the containers present in site B.

I have gone through the job executor camunda documentation: The Job Executor | docs.camunda.org

In this documentation, I came across one property jobExecutorDeploymentAware which states the job can be acquired by the only node which created it. So in my case, if containerA1 has created the job only containerA1 can acquire it.

Can we have job acquisition at the site level, where a job can be acquired by any node present in that specific site, regardless which node made the deployment for a site.

Thanks in advance for the help.

The jobExecutorDeploymentAware doesn’t actually restrict it to the node that created it, but does limit job pickup based on what components are on that node.

It comes with a LOT of challenges. You would likely be better off sorting out how to make these tasks into external tasks, which helps you move toward the C8 model.

Hi @GotnOGuts , thanks for replying

Let me be more specific with the problem, I have a sub-process which has 4 elements

  1. Service task with java class implementation
  2. Event based gateway
  3. Intermediate message catch event
  4. Timer intermediate catch event

I have triggered one process instance and the instance is currently waiting at event based gateway in the sub-process, waiting for either message for correlation or timer catch event till the timer is due, whichever event occurs first.

If the timer due event occurs first, I want the job executor to execute this timer related job which is site specific. Lets say if containerA1 from site A made the deployment for the model which contains this sub-process, then this timer job can be picked by any of the container present in that particular site A either containerA1, containerA2, containerA3 or containerA4

As mentioned before, the Deployment Aware is the function that you would use to do this. It would allow any of the A# containers to pick up the job. However, if there’s any kind of mixture, ,chance that something might run on the wrong node, restarts of nodes, then there’s extra work you have to do.

Instead, if you transition to a completely homogenous process controller model, all those issues go away. Instead of running the tasks within the process engine itself, if you make them service tasks, then the task worker connects to the controller and says “I can do XYZ work, do you have any of those tasks available?” In that scenario, only the workers that can handle the task will get them.

This not only makes building your Camunda 7 cluster easier, but it also sets you up to transition into a Camunda 8 system later. Camunda 7 is end-of-support in Oct 2025 (only a year away), so figuring out how to transition now makes a lot of sense.

1 Like