The Apache Camel project has been designed to work easily with ActiveMQ - and comes embedded in both the clients and the broker from ActiveMQ 5.0 onwards.

Apache Camel supports an extensive range of integration patterns to make integration very simple! :

Enterprise Integration Patterns

Camel supports most of the Enterprise Integration Patterns from the excellent book by Gregor Hohpe and Bobby Woolf.

If you are new to Camel you might want to try the Getting Started in the User Guide before attempting to implement these patterns.

The EIP icons library is available as a Visio stencil file adapted to render the icons with the Camel color : sand. Download it here for your presentation, functional and technical analysis documents. The original EIP stencil is also available in OpenOffice 3.x Draw (thanks to Marco Garbelini) , Microsoft Visio, or Omnigraffle.

Messaging Systems

Message Channel

How does one application communicate with another using messaging?


How can two applications connected by a message channel exchange a piece of information?

Pipes and Filters

How can we perform complex processing on a message while maintaining independence and flexibility?

Message Router

How can you decouple individual processing steps so that messages can be passed to different filters depending on a set of conditions?

Message Translator

How can systems using different data formats communicate with each other using messaging?

Message Endpoint

How does an application connect to a messaging channel to send and receive messages?

Messaging Channels

Point to Point Channel

How can the caller be sure that exactly one receiver will receive the document or perform the call?

Publish Subscribe Channel

How can the sender broadcast an event to all interested receivers?

Dead Letter Channel

What will the messaging system do with a message it cannot deliver?

Guaranteed Delivery

How can the sender make sure that a message will be delivered, even if the messaging system fails?

Message Bus

What is an architecture that enables separate applications to work together, but in a de-coupled fashion such that applications can be easily added or removed without affecting the others?

Message Construction

Event Message

How can messaging be used to transmit events from one application to another?

Request Reply

When an application sends a message, how can it get a response from the receiver?

Correlation Identifier

How does a requestor that has received a reply know which request this is the reply for?

Return Address

How does a replier know where to send the reply?

Message Routing

Content Based Router

How do we handle a situation where the implementation of a single logical function (e.g., inventory check) is spread across multiple physical systems?

Message Filter

How can a component avoid receiving uninteresting messages?

Dynamic Router

How can you avoid the dependency of the router on all possible destinations while maintaining its efficiency?

Recipient List

How do we route a message to a list of (static or dynamically) specified recipients?


How can we process a message if it contains multiple elements, each of which may have to be processed in a different way?


How do we combine the results of individual, but related messages so that they can be processed as a whole?


How can we get a stream of related but out-of-sequence messages back into the correct order?

Composed Message Processor

How can you maintain the overall message flow when processing a message consisting of multiple elements, each of which may require different processing?


How do you maintain the overall message flow when a message needs to be sent to multiple recipients, each of which may send a reply?

Routing Slip

How do we route a message consecutively through a series of processing steps when the sequence of steps is not known at design-time and may vary for each message?


How can I throttle messages to ensure that a specific endpoint does not get overloaded, or we don't exceed an agreed SLA with some external service?


How can I sample one message out of many in a given period to avoid downstream route does not get overloaded?


How can I delay the sending of a message?

Load Balancer

How can I balance load across a number of endpoints?


How can I route a message to a number of endpoints at the same time?


How can I repeat processing a message in a loop?

Message Transformation

Content Enricher

How do we communicate with another system if the message originator does not have all the required data items available?

Content Filter

How do you simplify dealing with a large message, when you are interested only in a few data items?

Claim Check

How can we reduce the data volume of message sent across the system without sacrificing information content?


How do you process messages that are semantically equivalent, but arrive in a different format?


How can I sort the body of a message?


How can I validate a message?

Messaging Endpoints

Messaging Mapper

How do you move data between domain objects and the messaging infrastructure while keeping the two independent of each other?

Event Driven Consumer

How can an application automatically consume messages as they become available?

Polling Consumer

How can an application consume a message when the application is ready?

Competing Consumers

How can a messaging client process multiple messages concurrently?

Message Dispatcher

How can multiple consumers on a single channel coordinate their message processing?

Selective Consumer

How can a message consumer select which messages it wishes to receive?

Durable Subscriber

How can a subscriber avoid missing messages while it's not listening for them?

Idempotent Consumer

How can a message receiver deal with duplicate messages?

Transactional Client

How can a client control its transactions with the messaging system?

Messaging Gateway

How do you encapsulate access to the messaging system from the rest of the application?

Service Activator

How can an application design a service to be invoked both via various messaging technologies and via non-messaging techniques?

System Management


How can we effectively administer a messaging system that is distributed across multiple platforms and a wide geographic area?


How can you route a message through intermediate steps to perform validation, testing or debugging functions?

Wire Tap

How do you inspect messages that travel on a point-to-point channel?

Message History

How can we effectively analyze and debug the flow of messages in a loosely coupled system?


How can I log processing a message?

It also supports a wide range of transport binding components:

Components Included

Camel includes the following Component implementations via URIs.



Make sure to read How do I configure endpoints to learn more about configuring endpoints. For example how to refer to beans in the Registry or how to use raw values for password options, and using property placeholders etc.

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.

AWS-CW / camel-aws

For working with Amazon's CloudWatch (CW).

AWS-DDB / camel-aws

For working with Amazon's DynamoDB (DDB).

AWS-SDB / camel-aws

For working with Amazon's SimpleDB (SDB).

AWS-SES / camel-aws

For working with Amazon's Simple Email Service (SES).

AWS-SNS / camel-aws

For Messaging with Amazon's Simple Notification Service (SNS).

AWS-SQS / camel-aws

For Messaging with Amazon's Simple Queue Service (SQS).

AWS-SWF / camel-aws

For Messaging with Amazon's Simple Workflow Service (SWF).

AWS-S3 / camel-aws

For working with Amazon's Simple Storage Service (S3).

Bean / camel-core

Uses the Bean Binding to bind message exchanges to beans in the Registry. Is also used for exposing and invoking POJO (Plain Old Java Objects).

Beanstalk / camel-beanstalk

For working with Amazon's Beanstalk.

Bean Validator / camel-bean-validator

Validates the payload of a message using the Java Validation API (JSR 303 and JAXP Validation) and its reference implementation Hibernate Validator

Box / camel-box

For uploading, downloading and managing files, managing files, folders, groups, collaborations, etc. on

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.

Class / camel-core

Uses the Bean Binding to bind message exchanges to beans in the Registry. Is also used for exposing and invoking POJO (Plain Old Java Objects).

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

Used to deliver messages using the jetty cometd implementation of the bayeux protocol

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

ControlBus EIP that allows to send messages to Endpoints for managing and monitoring your Camel applications.

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

For load & soak testing the DataSet provides a way to create huge numbers of messages for sending to Components or asserting that they are consumed correctly

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

To provide the implementation of SEDA which is based on disruptor

Docker / camel-docker

 To communicate with Docker

Dropbox / camel-dropbox

The dropbox: component allows you to treat Dropbox remote folders as a producer or consumer of messages.

EJB / camel-ejb

Uses the Bean Binding to bind message exchanges to EJBs. It works like the Bean component but just for accessing EJBs. Supports EJB 3.0 onwards.

ElasticSearch / camel-elasticsearch

For interfacing with an ElasticSearch server.

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

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).

GAuth / camel-gae

Used by web applications to implement an OAuth consumer. See also Camel Components for Google App Engine.

GHttp / camel-gae

Provides connectivity to the URL fetch service of Google App Engine but can also be used to receive messages from servlets. See also Camel Components for Google App Engine.

GLogin / camel-gae

Used by Camel applications outside Google App Engine (GAE) for programmatic login to GAE applications. See also Camel Components for Google App Engine.

GTask / camel-gae

Supports asynchronous message processing on Google App Engine by using the task queueing service as message queue. See also Camel Components for Google App Engine.

Google Calendar / camel-google-calendar

Supports interaction with Google Calendar's REST API.

Google Drive / camel-google-drive

Supports interaction with Google Drive's REST API.

Google Mail / camel-google-mail

Supports interaction with Google Mail's REST API.

GMail / camel-gae

Supports sending of emails via the mail service of Google App Engine. See also Camel Components for Google App Engine.

Gora/ camel-gora

Supports to work with NoSQL databases using the Apache Gora framework.

Geocoder / camel-geocoder

Supports looking up geocoders for an address, or reverse lookup geocoders from an address.

GitHub / camel-github

For interacting with GitHub

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 / camel-hazelcast

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 model 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

iBATIS / camel-ibatis

Performs a query, poll, insert, update or delete in a relational database using Apache iBATIS

IMAP / camel-mail

Receiving email using IMAP

IMAPS / camel-mail


IRC / camel-irc

For IRC communication

JavaSpace / camel-javaspace

Sending and receiving messages through JavaSpace

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

The jgroups: component provides exchange of messages between Camel infrastructure and JGroups clusters.

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

For using a database as a queue via the JPA specification for working with OpenJPA, Hibernate or TopLink

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

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

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

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

Sending passive checks to Nagios using JSendNSCA

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

Communicates with OData 2.0 services using Apache Olingo 2.0.

Openshift / camel-openshift

To manage your Openshift applications.

OptaPlanner / camel-optaplanner

Solves the planning problem contained in a message with OptaPlanner.

Pax-Logging / camel-paxlogging

Receiving Pax-Logging events in OSGi

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

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

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

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

Uses the Solrj client API to interface with an Apache Lucene Solr server

Spark-rest / camel-spark-rest

 For easily defining REST services endpoints using Spark REST Java library.

Splunk / camel-splunk

For working with Splunk

Spring Boot / camel-spring-boot

Camel auto-configuration for the Spring Boot applications.

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

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

For communicating with Stomp compliant message brokers, like Apache ActiveMQ or ActiveMQ Apollo

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

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)


External Components

The following components are not part of the standard Apache Camel distribution and are available under a variety of licenses but can be used to extend Camel's 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

Couchbase / camel-couchbase in camel-extra

 Couchbase Working with Couchbase NoSQL document database

Db4o / camel-db4o in camel-extra


For using a db4o datastore as a queue via the db4o library

Esper / camel-esper in camel-extra


Working with the Esper Library for Event Stream Processing

Fabric AMQ / mq-fabric-camel in fabric8


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.

Fabric Fabric / fabric-camel in fabric8

ApacheThe 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.

Fabric Master / fabric-camel in fabric8

ApacheThe 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.

Hibernate / camel-hibernate in camel-extra


For using a database as a queue via the Hibernate library

JBI / servicemix-camel


For JBI integration such as working with Apache ServiceMix

JCIFS / camel-jcifs in camel-extra


This component provides access to remote file systems over the CIFS/SMB networking protocol by using the JCIFS library.

NMR / servicemix-nmr


Integration with the Normalized Message Router BUS in ServiceMix 4.x

RCode / camel-rcode in camel-extra


Uses Rserve to integrate Camel with the statistics environment R

Scalate / scalate-camel


Uses the given Scalate template to transform the message

Smooks / camel-smooks in camel-extra.


For working with EDI parsing using the Smooks library. This component is deprecated as Smooks now provides Camel integration out of the box

Spring Neo4j / camel-spring-neo4j in camel-extra

to bee clarified

Component for producing to Neo4j datastore using the Spring Data Neo4j library

VirtualBox / camel-virtualbox in camel-extra.


The VitualBox component uses the webservice API that exposes VirtualBox functionality and consumes events generated by virtual machines.

ZeroMQ / camel-zeromq in camel-extra.


The ZeroMQ component allows you to consumer or produce messages using ZeroMQ.


See Also

© 2004-2011 The Apache Software Foundation.
Apache ActiveMQ, ActiveMQ, Apache, the Apache feather logo, and the Apache ActiveMQ project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram