Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-8909

Execution of handlers is managed by a thread pool with the java external task client

    XMLWordPrintable

    Details

      Description

      Component

      https://github.com/camunda/camunda-external-task-client-java

      User story

      To maximize throughput when processing external tasks, I want to use a thread pool for executing external tasks.

      Background

      Currently, the external task client uses a single thread to fetch and lock tasks. This thread then also calls the external task handler for each task. So while the handler is running, no new tasks are fetched and multiple threads for parallelization are not employed.

      Acceptance Criteria

      • I can provide an instance of java.util.concurrent.Executor when bootstrapping the external task client
      • If no executor is supplied, a single thread executor is used for task execution (so that task handlers need not be thread-safe in this case). In this case when the executor is managed by the client, it must wait for all tasks to complete when it is stopped.
      • The acquisition thread should back off in case the executor is saturated, so that it does not lock all tasks at once while the executor cannot catch up. E.g. exponential backoff can be applied, this can be configurable, also as a Java interface that users can implement.

        mgm-controller-panel

        This is the controller panel for Smart Panels app

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                Unassigned Unassigned
                Reporter:
                tassilo.weidner Tassilo Weidner
                Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                  Dates

                  Created:
                  Updated:

                    Salesforce