Camunda 8 External task, worker subscription

Hi, Camunda lovers !

Hello Camunda community,

I’m currently in the process of migrating from Camunda 7 to Camunda 8, and I’ve encountered some challenges related to external task modeling. In my workflow, the majority of executions are handled as external tasks, with only a small portion being user tasks.

In Camunda 7, I could specify topics for modeling external tasks like so:


<implementation>
    <externalTask topic="myTopic" />
</implementation>

To address scalability and ensure tasks run in specific locations (such as AWS, GCP, or on-premises), I subscribed workers to specific topics. This setup allowed me to deploy workers in various locations or clouds independently, ensuring tasks were executed in the appropriate environment.

With Camunda 8, I’m uncertain about how to achieve the same functionality. Suppose I create a task named “Task A”; how can I ensure that one worker runs it in AWS while another runs it in GCP? It’s crucial for me to specify which workers handle tasks rather than relying on random assignment. Sometimes, tasks with the same name need to be executed in specific sites or clouds.

Any insights or guidance on implementing this workflow in Camunda 8 would be greatly appreciated.

Thanks

Have a solid look at the Task Type in the Details of the Details Pane. (Yes, I know this seems like a lot of redundant words)

    <bpmn:serviceTask id="Activity_17jx9yf" name="Task A">
      <bpmn:extensionElements>
        <zeebe:taskDefinition type="GCP_Task" />
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1gd8kj2</bpmn:incoming>
    </bpmn:serviceTask>

When your worker is polling for tasks, it will poll only for tasks that are of the correct type. So your GCP worker would only look for tasks of type GCP_Task, while your AWS Worker would only look for tasks of type AWS_Task
It doesn’t matter if the Service Task Name is the same between the two types…

2 Likes