Apache Camel
A Java integration framework that moves and transforms messages between systems with routes built from Enterprise Integration Patterns, written in Java, XML or YAML, with over 350 connectors.
Apache · Top-level project- What it is
- ETL & ELT pipelines
- Type
- Open source
- Made by
- Apache Software Foundation
- Foundation
- The Apache Software Foundation, top-level project
- License
- Apache 2.0
- Facts checked
- 24 October 2026
What it is
Camel is a library, not a server: it runs inside your Java application, a Spring Boot or Quarkus service, or from the camel command line built on JBang. A CamelContext holds routes. Each route has exactly one input endpoint and any number of outputs, and endpoints are written as URIs such as kafka:orders, aws2-s3://bucket, jms:queue:invoices or timer:tick?period=1s; the part before the colon picks a component, the plugin that knows how to talk to that system. Between input and output, processors implement the Enterprise Integration Patterns from Hohpe and Woolf’s 2003 book: content-based routers, message filters, splitters, aggregators, content enrichers, idempotent consumers, dead-letter channels and dozens more, each with the same name in every DSL. Pluggable data formats convert message bodies, and expression languages such as Simple read headers and bodies.
Where NiFi gives you a drawn graph on a server, Camel gives you code that lives in your repository and deploys like any other service. Around the core sit Camel Spring Boot and Camel Quarkus for running routes as microservices, Kamelets (reusable, parameterised route snippets used as connectors), the Camel Kafka Connector, which exposes Camel components as Kafka Connect connectors, Camel K for running integrations on Kubernetes, and Karavan, a visual designer for routes. Camel 4.23.0 came out in October 2026 and runs on Java 17, 21 or 25; 4.22 and 4.18 are long-term-support lines.
Why teams pick it
- A very large catalogue of components, from HTTP, JMS, Kafka and S3 to SaaS APIs, files and databases, all used through the same URI and route model
- Integration patterns such as splitting, aggregation, retries and dead-letter handling come built in, with consistent names across Java, XML and YAML
- Routes are code: they live in Git, are reviewed and unit-tested, and run inside an ordinary Spring Boot or Quarkus service
- Small embeddable core that scales from a CLI script to many microservices
Watch out for
- A Java ecosystem: you need a JVM, and Java skills to debug, extend or tune it
- Each route runs where you deploy it; there is no central server with back pressure, queues on disk or provenance like NiFi’s, so durability depends on the brokers you route through
- The breadth is also a learning curve: hundreds of components, several DSLs and runtimes, and many subprojects to choose between
- Frequent releases; staying supported means tracking the LTS lines (in October 2026, 4.18 until February 2027 and 4.22 until August 2027)
- Written in
- Java
- Ways to run it
- A library in Java apps, Spring Boot or Quarkus; Camel K on Kubernetes; JBang CLI
Alternatives
What all etl & elt pipelines have in common →Compare side by side →
Redpanda ConnectRenamedOpen sourceFormerly Benthos: one Go binary that runs a YAML pipeline of inputs, processors and outputs, with at-least-once delivery and no disk state of its own.
MeltanoOpen sourceA command-line ELT tool that runs Singer taps and targets from a meltano.yml project kept in git.
OLakeOpen sourceAn open-source tool in Go that copies databases, Kafka topics and S3 files into Apache Iceberg tables (or plain Parquet), with full loads, incremental syncs and CDC, and no Kafka, Debezium, Spark or Flink in between.How it fits with other technologies
A YAML route: filter messages and log both paths (run it with `camel run route.yaml`) · yaml
- route:
from:
uri: "direct:start"
steps:
- filter:
expression:
simple: "${in.header.continue} == true"
steps:
- to:
uri: "log:filtered"
- to:
uri: "log:original"See it in a real stack
No architecture uses Apache Camel yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2003–2026
Gregor Hohpe and Bobby Woolf’s book Enterprise Integration Patterns (Addison-Wesley, 2003) named 65 recurring ways that messages are routed, split, merged and transformed between systems, and spurred a generation of open-source integration products. James Strachan checked in the first code of the Camel routing library on 19 March 2007, inside the Apache ActiveMQ project’s repository: the patterns as a small Java library with a routing DSL, rather than a separate server.
Camel became a top-level Apache project in December 2008. Camel 2.0 followed in August 2009 and 3.0 in November 2019. Camel 4.0, published in August 2023 as a long-term-support release, required Java 17, moved from javax to Jakarta EE 10 APIs and targeted Spring Boot 3 and Quarkus 3. The project now ships a feature release roughly every month or two, with two LTS lines supported at a time.
Why it’s built this way
- A library, not a server
- Integration usually meant deploying an enterprise service bus; a small library with few dependencies lets the same patterns run inside any Java application, test or container.
- Endpoints as URIs
- A URI names both the component and its options in one string, and the API is the same whatever the transport, so switching from files to S3 or from JMS to Kafka changes the URI, not the route.
- Name things after Enterprise Integration Patterns
- A shared vocabulary from the book makes routes readable across teams, and every DSL uses the same pattern names.
Timeline
- 2003
Hohpe and Woolf publish Enterprise Integration Patterns
- 2007
James Strachan checks in the Camel routing library on 19 March, inside ActiveMQ’s repository
- 2008
Becomes a top-level Apache project in December
- 2009
Camel 2.0 in August
- 2019
Camel 3.0 in November
- 2023
Camel 4.0 in August: Java 17, Jakarta EE 10, Spring Boot 3
- 2026
Camel 4.23.0 in October, supporting Java 25
- GitHub: apache/camel, Initial checkin of Camel routing library (James Strachan, 19 March 2007, svn path activemq/camel/trunk)
- Apache projects directory: Camel PMC (established December 2008)
- Enterprise Integration Patterns: home page (65 patterns; Apache Camel among the implementations)
- Enterprise Integration Patterns: Books (Hohpe and Woolf, Addison-Wesley, 2003)
- GitHub: apache/camel tags (camel-2.0.0 August 2009, camel-3.0.0 November 2019, camel-4.0.0 August 2023)
- Apache Camel blog: Apache Camel 4 what’s new (15 Aug 2023)
- Apache Camel downloads (4.23.0, LTS lines, Java support)
Sources8 · facts checked 24 October 2026
- Apache Camel FAQ: What is Camel? (EIPs, URIs, components, Java, XML and YAML DSLs)
- Apache Camel manual: Architecture (CamelContext, routes, components, processors)
- Apache Camel docs: Enterprise Integration Patterns (the EIPs Camel implements)
- Apache Camel: Projects (Core, Quarkus, Spring Boot, K, Kamelets, Kafka Connector, Karavan, JBang)
- Apache Camel docs: YAML DSL (route examples)
- Apache Camel manual: Camel JBang (camel init, camel run)
- Apache Camel downloads (4.23.0; 4.22 and 4.18 LTS; Java 17, 21, 25)
- GitHub: apache/camel (350+ connectors, Apache 2.0)