ArchitectureCamel uses a Java based Routing Domain Specific Language (DSL) or an Xml Configuration to configure routing and mediation rules which are added to a CamelContext to implement the various Enterprise Integration Patterns.
At a high level Camel consists of a CamelContext which contains a collection of Component instances. A Component is essentially a factory of Endpoint instances. You can explicitly configure Component instances in Java code or an IoC container like Spring or Guice, or they can be auto-discovered using URIs.
An Endpoint acts rather like a URI or URL in a web application or a Destination in a JMS system; you can communicate with an endpoint; either sending messages to it or consuming messages from it. You can then create a Producer or Consumer on an Endpoint to exchange messages with it.
The DSL makes heavy use of pluggable Languages to create an Expression or Predicate to make a truly powerful DSL which is extensible to the most suitable language depending on your needs. The following languages are supported
- Bean Language for using Java for expressions
- the unified EL from JSP and JSF
- Ref Language
- ExchangeProperty / Property
- Scripting Languages such as
- Spring Expression Language
Most of these languages is also supported used as Annotation Based Expression Language.
For a full details of the individual languages see the Language Appendix
Current Supported URIs
Component / ArtifactId / URI
To call external HTTP services using Async Http Client
To exchange data with external Websocket servers using Async Http Client
For Messaging with AMQP protocol
For sending notifications to Apple iOS devices
To exchange data with external Websocket clients using Atmosphere
Working with Apache Abdera for atom integration, such as consuming an atom feed.
Working with Apache Avro for data serialization.
For working with Amazon's CloudWatch (CW).
For working with Amazon's DynamoDB (DDB).
For working with Amazon's DynamoDB Streams (DDB Streams).
For working with Amazon's Elastic Compute Cloud (EC2).
For working with Amazon's SimpleDB (SDB).
For working with Amazon's Simple Email Service (SES).
For Messaging with Amazon's Simple Notification Service (SNS).
For Messaging with Amazon's Simple Queue Service (SQS).
For Messaging with Amazon's Simple Workflow Service (SWF).
For working with Amazon's Simple Storage Service (S3).
For working with Amazon's Beanstalk.
Bean Validator /
For uploading, downloading and managing files, managing files, folders, groups, collaborations, etc. on Box.com.
Component for interacting with Braintree Payments via Braintree Java SDK
Provides a simple BrowsableEndpoint which can be useful for testing, visualisation tools or debugging. The exchanges sent to the endpoint are all available to be browsed.
The cache component facilitates creation of caching endpoints and processors using EHCache as the cache implementation.
For integrating with Apache Cassandra.
Chronicle Engine /
|Chronicle Engine is a high performance, low latency, reactive processing framework.|
Generates a response using a Chunk template
Uses the Apache Chemistry client API to interface with CMIS supporting CMS
For interfacing with an Consul.
Used to refer to endpoints within a separate CamelContext to provide a simple black box composition approach so that routes can be combined into a CamelContext and then used as a black box component inside other routes in other CamelContexts
To integrate with Apache CouchDB.
Crypto (Digital Signatures) /
Used to sign and verify exchanges using the Signature Service of the Java Cryptographic Extension.
Working with Apache CXF for web services integration
CXF Bean /
Proceess the exchange using a JAX WS or JAX RS annotated bean from the registry. Requires less configuration than the above CXF Component
Working with Apache CXF for REST services integration
for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.
Synchronous call to another endpoint from same CamelContext.
Synchronous call to another endpoint in another CamelContext running in the same JVM.
To lookup domain information and run DNS queries using DNSJava
To communicate with Docker
To convert message body using the Dozer type converter library.
The dropbox: component allows you to treat Dropbox remote folders as a producer or consumer of messages.
The cache component facilitates creation of caching endpoints and processors using Ehcache 3 as the cache implementation.
For interfacing with an ElasticSearch server.
For interfacing with an Etcd key value store.
Spring Event /
Working with Spring ApplicationEvents
Receiving OSGi EventAdmin events
For executing system commands
Providing access to all of the Facebook APIs accessible using Facebook4J
Sending messages to a file or polling a file or directory.
Processing fixed width or delimited files or messages using the FlatPack library
Bridges Camel connectors with Apache Flink tasks.
Renders the message into different output formats using Apache FOP
Generates a response using a FreeMarker template
Sending and receiving files over FTP.
Sending and receiving files over FTP Secure (TLS and SSL).
Supports interaction with Git repositories
Supports interaction with Github
Used by Camel applications outside Google App Engine (GAE) for programmatic login to GAE applications. See also Camel Components for Google App Engine.
Supports interaction with Google Calendar's REST API.
Supports interaction with Google Drive's REST API.
Supports interaction with Google Mail's REST API.
Supports to work with NoSQL databases using the Apache Gora framework.
Grape component allows you to fetch, load and manage additional jars when CamelContext is running.
Supports looking up geocoders for an address, or reverse lookup geocoders from an address.
Google Guava EventBus /
The Google Guava EventBus allows publish-subscribe-style communication between components without requiring the components to explicitly register with one another (and thus be aware of each other). This component provides integration bridge between Camel and Google Guava EventBus infrastructure.
Hazelcast is a data grid entirely implemented in Java (single jar). This component supports map, multimap, seda, queue, set, atomic number and simple cluster support.
For reading/writing from/to an HBase store (Hadoop database)
For reading/writing from/to an HDFS filesystem using Hadoop 1.x
For reading/writing from/to an HDFS filesystem using Hadoop 2.x
For sending/receiving messages to Hipchat using v2 API
For working with the HL7 MLLP protocol and the HL7 data format using the HAPI library
For reading/writing from/to Infinispan distributed key/value store and data grid
For calling out to external HTTP servers using Apache HTTP Client 3.x
For calling out to external HTTP servers using Apache HTTP Client 4.x
Performs a query, poll, insert, update or delete in a relational database using Apache iBATIS
Apache Ignite In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies. It is designed to deliver uncompromised performance for a wide set of in-memory computing use cases from high performance computing, to the industry most advanced data grid, highly available service grid, and streaming.
Receiving email using IMAP
For IRC communication
For working with IronMQ a elastic and durable hosted message queue as a service.
Sending and receiving messages through JavaSpace
Sending messages through kie-remote-client API to jBPM.
The JCache component facilitates creation of caching endpoints and processors using JCache / jsr107 as the cache implementation.
For interacting with cloud compute & blobstore service via jclouds
Storing a message in a JCR compliant repository like Apache Jackrabbit
For performing JDBC queries and operations
For exposing or consuming services over HTTP
For interacting with JIRA
Working with JMS providers
For working with JMX notification listeners
The jolt: component allows you to process a JSON messages using an JOLT specification. This can be ideal when doing JSON to JSON transformation.
Support for the scp protocol
For integrating with data queues on an AS/400 (aka System i, IBM i, i5, ...) system
For producing to or consuming from Apache Kafka message brokers.
For producing to or consuming from Kestrel queues
For producing to or consuming to Krati datastores
For integrating your application with Kubernetes standalone or on top of OpenShift.
For deploying Camel OSGi routes into the Eclipse Kura M2M container.
Executes Languages scripts
Performing searches on LDAP servers (<scope> must be one of object|onelevel|subtree)
Component for retrieving LinkedIn user profiles, connections, companies, groups, posts, etc. using LinkedIn REST API.
Uses Jakarta Commons Logging to log the message exchange to some underlying logging system like log4j
Uses Apache Lucene to perform Java-based indexing and full text based searches using advanced analysis/tokenization capabilities
Uses the Lumberjack protocol for retrieving logs (from Filebeat for instance)
Uses Metrics to collect application statistics directly from Camel routes.
Working with Apache MINA 1.x
Working with Apache MINA 2.x
For testing routes and mediation rules using mocks
The MLLP component is specifically designed to handle the nuances of the MLLP protocol and provide the functionality required by Healthcare providers to communicate with other systems using the MLLP protocol
Interacts with MongoDB databases and collections. Offers producer endpoints to perform CRUD-style operations and more against databases and collections, as well as consumer endpoints to listen on collections and dispatch objects to Camel routes
MongoDB GridFS /
Sending and receiving files via MongoDB's GridFS system. Note: for Camel < 2.19, the URI syntax is gridfs:dbName[?options]
Component for communicating with MQTT M2M message brokers
Validates the payload of a message using the MSV Library
Generates a response using a Mustache template
Generates a response using an MVEL template
Performs a query, poll, insert, update or delete in a relational database using MyBatis
For messaging with the NATS platform.
Working with TCP and UDP protocols using Java NIO based capabilities offered by the Netty project
|Working with TCP and UDP protocols using Java NIO based capabilities offered by the Netty project|
Netty HTTP /
Netty HTTP server and client using the Netty project
Netty4 HTTP /
|Netty HTTP server and client using the Netty project 4.x|
To manage your Openshift applications.
Solves the planning problem contained in a message with OptaPlanner.
Paho component provides connector for the MQTT messaging protocol using the Paho library.
Receiving Pax-Logging events in OSGi
Allows to work with Apache PDFBox PDF documents
Allows for Producing/Consuming PostgreSQL events related to the LISTEN/NOTIFY commands added since PostgreSQL 8.3
Receiving email using POP3 and JavaMail
The printer component facilitates creation of printer endpoints to local, remote and wireless printers. The endpoints provide the ability to print camel directed payloads when utilized on camel routes.
The properties component facilitates using property placeholders directly in endpoint URI definitions.
Provides a scheduled delivery of messages using the Quartz 1.x scheduler
Provides a scheduled delivery of messages using the Quartz 2.x scheduler
Implementation of the QuickFix for Java engine which allow to send/receive FIX messages
Component for integrating with RabbitMQ
Component for lookup of existing endpoints bound in the Registry.
Component for consuming Restful resources supporting the Rest DSL and plugins to other Camel rest components.
Component for consuming and producing Restful resources using Restlet
REST Swagger / camel-rest-swagger
Component for accessing REST resources using Swagger specification as configuration.
Working with RMI
Validates the payload of a message using RelaxNG Compact Syntax
Validates the payload of a message using RelaxNG
Facilitates the creation of specialized endpoints that offer encapsulation and a strategy/map based indirection service to a collection of camel routes hosted in an automatically created or user injected camel context
Working with ROME for RSS integration, such as consuming an RSS feed.
To integrate with Salesforce
SAP NetWeaver /
To integrate with SAP NetWeaver Gateway
Used to generate message exchanges when a scheduler fires. The scheduler has more functionality than the timer component.
Camel component of Schematron which supports to validate the XML instance documents.
Asynchronous call to another endpoint in the same CamelContext
Camel component for ServiceNow
For exposing services over HTTP through the servlet which is deployed into the Web container.
Sending and receiving files over SFTP (FTP over SSH).
Publish/Subscribe communication capability using the Telecom SIP protocol. RFC3903 - Session Initiation Protocol (SIP) Extension for Event
A ground up implementation of a JMS client
A specialized JMS component for highly-performant transactional batch consumption from a queue.
Sending email using SMTP and JavaMail
To send and receive SMS using Short Messaging Service Center using the JSMPP library
Polling OID values and receiving traps using SNMP via SNMP4J library
Apache Spark /
Bridges Apache Spark computations with Camel endpoints.
For easily defining REST services endpoints using Spark REST Java library.
For working with Splunk
To bridge Camel and Spring Batch
The bridge component of Camel and Spring Integration
Spring LDAP /
Camel wrapper for Spring LDAP
Spring Redis /
Component for consuming and producing from Redis key-value store Redis
Spring Web Services /
Client-side support for accessing web services, and server-side support for creating your own contract-first web services using Spring Web Services
Performing SQL queries using JDBC
Performing SQL queries using Stored Procedure calls
SSH component /
For sending commands to a SSH server
Process messages through a SAX ContentHandler.
Read or write to an input/output/error/file stream rather like unix pipes
Generates a response using a String Template
Allows you to stub out some physical middleware endpoint for easier testing or debugging
Allows to exchange data with the Telegram messaging network
Creates a Mock endpoint which expects to receive all the message bodies that could be polled from the given underlying endpoint
Used to generate message exchanges when a timer fires You can only consume events from this endpoint.
A twitter endpoint
HTTP server and client using the light-weight Undertow server.
Validates the payload of a message using XML Schema and JAXP Validation
Generates a response using an Apache Velocity template
Working with the vertx event bus
Asynchronous call to another endpoint in the same JVM
Polls the weather information from Open Weather Map
Communicating with Websocket clients
XML Security /
Used to sign and verify exchanges using the XML signature specification.
Working with XMPP and Jabber
Generates a response using an XQuery template
Generates a response using an XSLT template
Allows you to interact with the Yammer enterprise social network
Working with ZooKeeper cluster(s)
URI's for external components
Other projects and companies have also created Camel components to integrate additional functionality into Camel. These components may be provided under licenses that are not compatible with the Apache License, use libraries that are not compatible, etc... These components are not supported by the Camel team, but we provide links here to help users find the additional functionality.
Component / ArtifactId / URI
For JMS Messaging with Apache ActiveMQ.
ActiveMQ Broker /
For internal message routing in the ActiveMQ broker using Camel.
For working with Activiti, a light-weight workflow and Business Process Management (BPM) platform which supports BPMN 2.
Camel Bluetooth component can retrieve information about the Bluetooth devices available within the device range.
Working with Couchbase NoSQL document database.
For using a db4o datastore as a queue via the db4o library.
Working with the Esper Library for Event Stream Processing.
The amq: endpoint works exactly like the activemq: endpoint in Apache Camel; only it uses the fabric to automatically discover the broker. So there is no configuration required; it'll just work out of the box and automatically discover whatever ActiveMQ message brokers are available; with failover and load balancing.
The fabric: endpoint uses Fabric's discovery mechanism to expose physical sockets, HTTP endpoints, etc. into the runtime registry using a logical name so that clients can use the existing Camel Load Balancer.
The master: endpoint provides a way to ensure only a single consumer in a cluster consumes from a given endpoint; with automatic failover if that JVM dies.
Camel Framebuffer component can be used to manage any Linux Framebuffer.
Camel GPSD component can be used to read current GPS information from GPS devices.
For using a database as a queue via the Hibernate library.
For JBI integration such as working with Apache ServiceMix.
This component provides access to remote file systems over the CIFS/SMB networking protocol by using the JCIFS library.
Camel Kura Cloud component interacts directly with Kura CloudService.
Camel Kura WiFi component can be used to retrieve the information about the WiFi access spots available within the device range.
Integration with the Normalized Message Router BUS in ServiceMix 4.x.
Camel OpenIMAJ component can be used to detect faces in images.
GPIO Component for RaspberryPi based on pi4j lib.
i2c Component for RaspberryPi based on pi4j lib.
Uses the given Scalate template to transform the message.
Component for producing to Neo4j datastore using the Spring Data Neo4j library.
The VitualBox component uses the webservice API that exposes VirtualBox functionality and consumes events generated by virtual machines.
Camel Webcam component can be used to capture still images and detect motion.
The ZeroMQ component allows you to consumer or produce messages using ZeroMQ.
For a full details of the individual components see the Component Appendix