Camunda Job Executor Explained: Architecture, Configuration & Troubleshooting Guide
Camunda Job Executor Explained (Architecture, Configuration, and Troubleshooting)
The Camunda Job Executor is the backbone of asynchronous processing in Camunda BPM. If your workflows use timers, async continuations, retries, or background execution—this is the component doing the heavy lifting.
In this guide, we’ll break down:
Architecture (how it works internally)
Configuration (how to tune it)
Troubleshooting (why jobs get stuck and how to fix)
🔹 1. What is Camunda Job Executor?
The Job Executor is responsible for executing background jobs such as:
Timer events
Async service tasks
Failed job retries
It works as a thread pool system that continuously polls the database and executes pending jobs
🔹 2. Job Executor Architecture
Core Components
ACT_RU_JOB Table
Stores all pending jobs
Includes lock info, retries, due dates
Job Acquisition Thread
Polls DB for executable jobs
Locks jobs to avoid duplication
Thread Pool
Executes jobs in parallel
Controlled via configuration
Execution Flow
Job is created (e.g., asyncBefore, timer)
Stored in
ACT_RU_JOBJob acquisition picks & locks it
Job sent to thread pool
Worker thread executes it
Job removed after success
👉 Each job is locked to avoid multiple nodes executing it simultaneously
🔹 3. Job Executor in Cluster
Each node has its own Job Executor
No central coordinator
All nodes share the same DB
Coordination happens via DB locking
👉 This allows horizontal scaling (add more nodes easily)
🔹 4. Job Executor Configuration
Sample Configuration (Tomcat / bpm-platform.xml)
<job-executor>
<job-acquisition name="default">
<properties>
<property name="maxJobsPerAcquisition">5</property>
<property name="waitTimeInMillis">8000</property>
<property name="lockTimeInMillis">400000</property>
</properties>
</job-acquisition>
<properties>
<property name="queueSize">3</property>
<property name="corePoolSize">5</property>
<property name="maxPoolSize">10</property>
</properties>
</job-executor>
Key Properties Explained
| Property | Meaning |
|---|---|
| maxJobsPerAcquisition | Jobs fetched per cycle |
| waitTimeInMillis | Polling delay |
| lockTimeInMillis | Lock duration |
| corePoolSize | Minimum threads |
| maxPoolSize | Max threads |
| queueSize | Job queue capacity |
👉 These settings directly impact performance and scalability
🔹 5. Common Issues & Troubleshooting
🚨 Issue 1: Jobs Not Executing
Symptoms
Process stuck at async task
Jobs visible in DB but not picked
Check
ACT_RU_JOB.LOCK_OWNER_empty → not acquired
Fix
Ensure Job Executor is enabled
Check thread pool size
🚨 Issue 2: Jobs Stuck / Delayed
Causes
DB performance issues
Long-running service tasks
External API calls blocking threads
👉 Slow tasks can block executor threads and delay others
Fix
Use External Tasks for long-running work
Increase thread pool
🚨 Issue 3: Only One Node Processing Jobs (Cluster)
Cause
deploymentAware setting incorrect
Fix
Set:
jobExecutorDeploymentAware = false
🚨 Issue 4: Job Retries Failing
Default behavior
Job retries automatically (usually 3 times)
Fix
Configure retry cycle:
camunda:failedJobRetryTimeCycle="R5/PT5M"
🚨 Issue 5: High Load / Job Starvation
Symptoms
Some jobs never execute
Cause
Poor prioritization or DB ordering
Fix
Use job priorities
Tune acquisition settings
🔹 6. Best Practices
✅ Use asyncBefore for long tasks
✅ Move heavy logic to External Tasks
✅ Monitor:
ACT_RU_JOBACT_RU_EXECUTION
✅ Tune:
Thread pool size
Acquisition batch size
✅ Use Cockpit for:
Failed jobs
Retry handling
🔹 7. When to Use External Tasks Instead?
| Scenario | Use |
|---|---|
| Long API calls | External Task |
| CPU-heavy work | External Task |
| Simple logic | Job Executor |
🔹 8. Summary
Job Executor = Background worker engine
Works via DB polling + thread pool
Critical for async execution
Needs tuning for performance
Common issues come from DB, config, or blocking tasks
🔹 📚 Recommended Articles
👉 Check out these related deep dives:
🔗 Camunda Service Task vs External Task – Complete Guide
https://shikhanirankari.blogspot.com/2026/03/camunda-service-task-vs-external-task.html🔗 Execution Stuck on Parallel Gateway in BPMN (Camunda)
https://shikhanirankari.blogspot.com/2026/03/execution-stuck-on-parallel-gateway-in.html🔗 Confluence vs SharePoint – Knowledge Management Comparison
https://shikhanirankari.blogspot.com/2026/03/confluence-vs-sharepoint-which.html
💼 Professional Support Available
If you are facing issues in real projects related to enterprise backend development or workflow automation, I provide paid consulting, production debugging, project support, and focused trainings.
Technologies covered include Java, Spring Boot, PL/SQL, CMS, Azure, and workflow automation (jBPM, Camunda BPM, RHPAM, Flowable).
📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com
🌐 Website: IT Trainings | Digital metal podium
Comments
Post a Comment