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
AHC / camel-ahc
To call external HTTP services using Async Http Client
AHC-WS / camel-ahc-ws
|To exchange data with external Websocket servers using Async Http Client|
AMQP / camel-amqp
For Messaging with AMQP protocol
APNS / camel-apns
For sending notifications to Apple iOS devices
Atmosphere-Websocket / camel-atmosphere-websocket
|To exchange data with external Websocket clients using Atmosphere|
Atom / camel-atom
Working with Apache Abdera for atom integration, such as consuming an atom feed.
Avro / camel-avro
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).
Bean / camel-core
Beanstalk / camel-beanstalk
|For working with Amazon's Beanstalk.|
Bean Validator / camel-bean-validator
Box / camel-box
For uploading, downloading and managing files, managing files, folders, groups, collaborations, etc. on Box.com.
Braintree / camel-braintree
|Component for interacting with Braintree Payments via Braintree Java SDK|
Browse / camel-core
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.
Cache / camel-cache
The cache component facilitates creation of caching endpoints and processors using EHCache as the cache implementation.
Cassandra / camel-cassandraql
|For integrating with Apache Cassandra.|
Class / camel-core
Chunk / camel-chunk
Generates a response using a Chunk template
CMIS / camel-cmis
Uses the Apache Chemistry client API to interface with CMIS supporting CMS
Cometd / camel-cometd
Context / camel-context
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
ControlBus / camel-core
CouchDB / camel-couchdb
To integrate with Apache CouchDB.
Crypto (Digital Signatures) / camel-crypto
Used to sign and verify exchanges using the Signature Service of the Java Cryptographic Extension.
CXF / camel-cxf
Working with Apache CXF for web services integration
CXF Bean / camel-cxf
Proceess the exchange using a JAX WS or JAX RS annotated bean from the registry. Requires less configuration than the above CXF Component
CXFRS / camel-cxf
Working with Apache CXF for REST services integration
DataFormat / camel-core
for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.
DataSet / camel-core
Direct / camel-core
Synchronous call to another endpoint from same CamelContext.
Direct-VM / camel-core
Synchronous call to another endpoint in another CamelContext running in the same JVM.
DNS / camel-dns
To lookup domain information and run DNS queries using DNSJava
Disruptor / camel-disruptor
Docker / camel-docker
|To communicate with Docker|
Dozer / camel-dozer
|To convert message body using the Dozer type converter library.|
Dropbox / camel-dropbox
|The dropbox: component allows you to treat Dropbox remote folders as a producer or consumer of messages.|
EJB / camel-ejb
ElasticSearch / camel-elasticsearch
For interfacing with an ElasticSearch server.
Etcd / camel-etcd
|For interfacing with an Etcd key value store.|
Spring Event / camel-spring
Working with Spring ApplicationEvents
EventAdmin / camel-eventadmin
Receiving OSGi EventAdmin events
Exec / camel-exec
For executing system commands
Facebook / camel-facebook
Providing access to all of the Facebook APIs accessible using Facebook4J
File / camel-core
Sending messages to a file or polling a file or directory.
Flatpack / camel-flatpack
Processing fixed width or delimited files or messages using the FlatPack library
Flink / camel-flink
|Bridges Camel connectors with Apache Flink tasks.|
FOP / camel-fop
Renders the message into different output formats using Apache FOP
FreeMarker / camel-freemarker
Generates a response using a FreeMarker template
FTP / camel-ftp
Sending and receiving files over FTP.
FTPS / camel-ftp
Sending and receiving files over FTP Secure (TLS and SSL).
Ganglia / camel-ganglia
|Sends values as metrics to the Ganglia performance monitoring system using gmetric4j. Can be used along with JMXetric.|
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.
Gora / camel-gora
|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.|
Geocoder / camel-geocoder
Supports looking up geocoders for an address, or reverse lookup geocoders from an address.
Google Guava EventBus / camel-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.
HBase / camel-hbase
For reading/writing from/to an HBase store (Hadoop database)
HDFS / camel-hdfs
For reading/writing from/to an HDFS filesystem using Hadoop 1.x
HDFS2 / camel-hdfs2
|For reading/writing from/to an HDFS filesystem using Hadoop 2.x|
Hipchat / camel-hipchat
|For sending/receiving messages to Hipchat using v2 API|
HL7 / camel-hl7
For working with the HL7 MLLP protocol and the HL7 data format using the HAPI library
Infinispan / camel-infinispan
For reading/writing from/to Infinispan distributed key/value store and data grid
HTTP / camel-http
For calling out to external HTTP servers using Apache HTTP Client 3.x
HTTP4 / camel-http4
For calling out to external HTTP servers using Apache HTTP Client 4.x
Hystrix / camel-hystrix
Provides integration with Netflix Hystrix library. Helps for creating resilient distributed systems by defending from cascading failures and slow responses.
iBATIS / camel-ibatis
Performs a query, poll, insert, update or delete in a relational database using Apache iBATIS
Ignite / camel-ignite
|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.|
IMAP / camel-mail
Receiving email using IMAP
IMAPS / camel-mail
IRC / camel-irc
For IRC communication
IronMQ / camel-ironmq
|For working with IronMQ a elastic and durable hosted message queue as a service.|
JavaSpace / camel-javaspace
Sending and receiving messages through JavaSpace
jBPM / camel-jbpm
Sending messages through kie-remote-client API to jBPM.
jcache / camel-jcache
|The JCache component facilitates creation of caching endpoints and processors using JCache / jsr107 as the cache implementation.|
jclouds / camel-jclouds
For interacting with cloud compute & blobstore service via jclouds
JCR / camel-jcr
Storing a message in a JCR compliant repository like Apache Jackrabbit
JDBC / camel-jdbc
For performing JDBC queries and operations
Jetty / camel-jetty
For exposing services over HTTP
JGroups / camel-jgroups
JIRA / camel-jira
For interacting with JIRA
JMS / camel-jms
Working with JMS providers
JMX / camel-jmx
For working with JMX notification listeners
JPA / camel-jpa
JOLT / camel-jolt
The jolt: component allows you to process a JSON messages using an JOLT specification. This can be ideal when doing JSON to JSON transformation.
Jsch / camel-jsch
Support for the scp protocol
JT/400 / camel-jt400
For integrating with data queues on an AS/400 (aka System i, IBM i, i5, ...) system
Kafka / camel-kafka
|For producing to or consuming from Apache Kafka message brokers.|
Kestrel / camel-kestrel
For producing to or consuming from Kestrel queues
Krati / camel-krati
For producing to or consuming to Krati datastores
Kubernetes / camel-kubernetes
|For integrating your application with Kubernetes standalone or on top of OpenShift.|
Kura / camel-kura
|For deploying Camel OSGi routes into the Eclipse Kura M2M container.|
Language / camel-core
Executes Languages scripts
LDAP / camel-ldap
Performing searches on LDAP servers (<scope> must be one of object|onelevel|subtree)
LinkedIn / camel-linkedin
Component for retrieving LinkedIn user profiles, connections, companies, groups, posts, etc. using LinkedIn REST API.
Log / camel-core
Uses Jakarta Commons Logging to log the message exchange to some underlying logging system like log4j
Lucene / camel-lucene
Uses Apache Lucene to perform Java-based indexing and full text based searches using advanced analysis/tokenization capabilities
Metrics / camel-metrics
Uses Metrics to collect application statistics directly from Camel routes.
MINA / camel-mina
Working with Apache MINA 1.x
MINA2 / camel-mina2
Working with Apache MINA 2.x
Mock / camel-core
For testing routes and mediation rules using mocks
MLLP / camel-mllp
|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|
MongoDB / camel-mongodb
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 / camel-mongodb-gridfs
Sending and receiving files via MongoDB's GridFS system.
MQTT / camel-mqtt
Component for communicating with MQTT M2M message brokers
MSV / camel-msv
Validates the payload of a message using the MSV Library
Mustache / camel-mustache
Generates a response using a Mustache template
MVEL / camel-mvel
Generates a response using an MVEL template
MyBatis / camel-mybatis
Performs a query, poll, insert, update or delete in a relational database using MyBatis
Nagios / camel-nagios
NATS / camel-nats
For messaging with the NATS platform.
Netty / camel-netty
Working with TCP and UDP protocols using Java NIO based capabilities offered by the Netty project
Netty4 / camel-netty4
|Working with TCP and UDP protocols using Java NIO based capabilities offered by the Netty project|
Netty HTTP / camel-netty-http
Netty HTTP server and client using the Netty project
Netty4 HTTP / camel-netty4-http
|Netty HTTP server and client using the Netty project 4.x|
Olingo2 / camel-olingo2
Openshift / camel-openshift
To manage your Openshift applications.
OptaPlanner / camel-optaplanner
Solves the planning problem contained in a message with OptaPlanner.
Paho / camel-paho
|Paho component provides connector for the MQTT messaging protocol using the Paho library.|
Pax-Logging / camel-paxlogging
Receiving Pax-Logging events in OSGi
PDF / camel-pdf
|Allows to work with Apache PDFBox PDF documents|
PGEvent / camel-pgevent
|Allows for Producing/Consuming PostgreSQL events related to the LISTEN/NOTIFY commands added since PostgreSQL 8.3|
POP3 / camel-mail
Receiving email using POP3 and JavaMail
POP3S / camel-mail
Printer / camel-printer
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.
Properties / camel-core
The properties component facilitates using property placeholders directly in endpoint uri definitions.
Quartz / camel-quartz
Provides a scheduled delivery of messages using the Quartz 1.x scheduler
Quartz2 / camel-quartz2
Provides a scheduled delivery of messages using the Quartz 2.x scheduler
Quickfix / camel-quickfix
Implementation of the QuickFix for Java engine which allow to send/receive FIX messages
RabbitMQ / camel-rabbitmq
Component for integrating with RabbitMQ
Ref / camel-core
Component for lookup of existing endpoints bound in the Registry.
Rest / camel-core
|Component for consuming Restful resources supporting the Rest DSL and plugins to other Camel rest components.|
Restlet / camel-restlet
Component for consuming and producing Restful resources using Restlet
RMI / camel-rmi
Working with RMI
RNC / camel-jing
Validates the payload of a message using RelaxNG Compact Syntax
RNG / camel-jing
Validates the payload of a message using RelaxNG
Routebox / camel-routebox
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
RSS / camel-rss
Working with ROME for RSS integration, such as consuming an RSS feed.
Salesforce / camel-salesforce
To integrate with Salesforce
SAP NetWeaver / camel-sap-netweaver
To integrate with SAP NetWeaver Gateway
Scheduler / camel-core
Used to generate message exchanges when a scheduler fires. The scheduler has more functionality than the timer component.
schematron / camel-schematron
|Camel component of Schematron which supports to validate the XML instance documents.|
SEDA / camel-core
Asynchronous call to another endpoint in the same Camel Context
ServiceNow / camel-servicenow
|Camel component for ServiceNow|
SERVLET / camel-servlet
For exposing services over HTTP through the servlet which is deployed into the Web container.
SFTP / camel-ftp
Sending and receiving files over SFTP (FTP over SSH).
Sip / camel-sip
Publish/Subscribe communication capability using the Telecom SIP protocol. RFC3903 - Session Initiation Protocol (SIP) Extension for Event
SIPS / camel-sip
SJMS / camel-sjms
A ground up implementation of a JMS client
A specialized JMS component for highly-performant transactional batch consumption from a queue.
Slack / camel-slack
|The slack component allows you to connect to an instance of Slack and delivers a message contained in the message body via a pre established Slack incoming webhook .|
SMTP / camel-mail
Sending email using SMTP and JavaMail
SMTP / camel-mail
SMPP / camel-smpp
To send and receive SMS using Short Messaging Service Center using the JSMPP library
SMPPS / camel-smpp
SNMP / camel-snmp
Polling OID values and receiving traps using SNMP via SNMP4J library
Solr / camel-solr
Apache Spark / camel-spark
|Bridges Apache Spark computations with Camel endpoints.|
Spark-rest / camel-spark-rest
|For easily defining REST services endpoints using Spark REST Java library.|
Splunk / camel-splunk
For working with Splunk
SpringBatch / camel-spring-batch
To bridge Camel and Spring Batch
SpringIntegration / camel-spring-integration
The bridge component of Camel and Spring Integration
Spring LDAP / camel-spring-ldap
Camel wrapper for Spring LDAP
Spring Redis / camel-spring-redis
Component for consuming and producing from Redis key-value store Redis
Spring Web Services / camel-spring-ws
Client-side support for accessing web services, and server-side support for creating your own contract-first web services using Spring Web Services
SQL / camel-sql
Performing SQL queries using JDBC
|Performing SQL queries using Stored Procedure calls|
SSH component / camel-ssh
For sending commands to a SSH server
StAX / camel-stax
Process messages through a SAX ContentHandler.
Stream / camel-stream
Read or write to an input/output/error/file stream rather like unix pipes
Stomp / camel-stomp
StringTemplate / camel-stringtemplate
Generates a response using a String Template
Stub / camel-core
Allows you to stub out some physical middleware endpoint for easier testing or debugging
Test / camel-spring
Creates a Mock endpoint which expects to receive all the message bodies that could be polled from the given underlying endpoint
Timer / camel-core
Used to generate message exchanges when a timer fires You can only consume events from this endpoint.
Twitter / camel-twitter
A twitter endpoint
Undertow / camel-undertow
|HTTP server and client using the light-weight Undertow server.|
Validation / camel-core (camel-spring for Camel 2.8 or older)
Validates the payload of a message using XML Schema and JAXP Validation
Velocity / camel-velocity
Generates a response using an Apache Velocity template
Vertx / camel-vertx
Working with the vertx event bus
VM / camel-core
Asynchronous call to another endpoint in the same JVM
Weather / camel-weather
Polls the weather information from Open Weather Map
Websocket / camel-websocket
Communicating with Websocket clients
XML Security / camel-xmlsecurity
Used to sign and verify exchanges using the XML signature specification.
XMPP / camel-xmpp
Working with XMPP and Jabber
XQuery / camel-saxon
Generates a response using an XQuery template
XSLT / camel-core (camel-spring for Camel 2.8 or older)
Generates a response using an XSLT template
Yammer / camel-yammer
Allows you to interact with the Yammer enterprise social network
Zookeeper / camel-zookeeper
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
ActiveMQ / activemq-camel
For JMS Messaging with Apache ActiveMQ
ActiveMQ Broker / activemq-camel
For internal message routing in the ActiveMQ broker using Camel.
Activiti / activiti-camel
For working with Activiti, a light-weight workflow and Business Process Management (BPM) platform which supports BPMN 2
|Apache||Camel Bluetooth component can retrieve information about the bluetooth devices available within the device range.|
|Couchbase||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.
|Apache||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.|
|Apache||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.|
|Apache||Camel Framebuffer component can be used to manage any Linux Framebuffer|
|Apache||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
JBI / servicemix-camel
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.
|Apache||Camel Kura WiFi component can be used to retrieve the information about the WiFi access spots available within the device range.|
NMR / servicemix-nmr
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
Camel PubNub component.
More information rhiot.io project
Scalate / scalate-camel
Uses the given Scalate template to transform the message
to bee clarified
Component for producing to Neo4j datastore using the Spring Data Neo4j library
More information rhiot.io project
The VitualBox component uses the webservice API that exposes VirtualBox functionality and consumes events generated by virtual machines.
|Apache||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