Sunday, October 27, 2013

I don't understand what exactly Camel does.
If you could give in 101 words an introduction to Camel:
  • What exactly is it?
  • How does it interact with an application written in Java?
  • Is it something that goes together with the server?
  • Is it an independent program?
Please explain what Camel is.
share|improve this question

7 Answers

up vote131down voteaccepted
If you have 5 to 10 minutes, then I generally recommend people to read this Article by Jonathan Anstey -http://java.dzone.com/articles/open-source-integration-apache. Its a well written piece, which gives a brief introduction, and overview what Camel is, and some of its concepts, and then implements a use-case, with code samples.
There is also a free chapter of the Camel in Action book - http://manning.com/ibsen/, which introduces Camel in the first chapter. Jonathan is a co-author on that book with me.
share|improve this answer
1 
Thanks a lot, that really helped. =) –  Myy Jan 15 '12 at 2:57
7 
The Camel in Action book is a very very good book to get to learn the basics and also how to use some of the more complicated features of Camel. I highly recommend it! (I am in no way affiliated with the book or publisher) –  aldridmc Jan 18 '12 at 15:26
 
@Clause if want to choose between mule ESB & Camel. what should be my demacation on choosing one ove the other –  kbird Jan 7 at 9:11
 
See some of the links at the comparison to Camels competitors at: camel.apache.org/articles.html. – Claus Ibsen Jan 7 at 13:20
No one wants to spend the rest of the day reading related articles in order to find out what one product does! Yet, this is what most project leaders make us do. For all those people who think it's too complicated to explain then you might get benefit from reading this article on how to create project descriptions.
Wikipedia says:
Apache Camel is a rule-based routing and mediation engine which provides a Java object based implementation of the Enterprise Integration Patterns using an API (or declarative Java Domain Specific Language) to configure routing and mediation rules. The domain specific language means that Apache Camel can support type-safe smart completion of routing rules in your IDE using regular Java code without huge amounts of XML configuration files; though XML configuration inside Spring is also supported.
I say:
Apache Camel is messaging technology glue with routing. It joins together messaging start and end points allowing the transference of messages from different sources to different destinations. For example: JMS -> JSON, HTTP -> JMS or funneling FTP -> JMS, HTTP -> JMS, JMS -> JSON
See? That wasn't hard was it?
share|improve this answer
3 
Thanks for the short answer. –  vikingsteve May 28 at 13:54
3 
@David Newcomb : That's the best and easiest answer, I have read on internet. Thanks a lot for such a great contribution. –  Mr.777 Jul 8 at 14:10
My take to describe this in a more accessible way...
In order to understand what Apache Camel is, you need to understand what Enterprise Integration Patterns are.
Let's start with what we presumably already know: The Singleton pattern, the Factory pattern, etc; They are merely ways of organizing your solution to the problem, but they are not solutions themselves. These patterns were analyzed and extracted for the rest of us by the Gang of Four, when they published their book: Design Patterns. They saved some of us tremendous effort in thinking of how to best structure our code.
Much like the Gang of Four, Gregor Hohpe and Bobby Woolf authored the book Enterprise Integration Patterns (EIP) in which they propose and document a set of new patterns and blueprints for how we could best design large component-based systems, where components can be running on the same process or in a different machine.
They basically propose that we structure our system to be message oriented -- where components communicate with each others using messages as inputs and outputs and absolutely nothing else. They show us a complete set of patterns that we may choose from and implement in our different components that will together form the whole system.
So what is Apache Camel?
Apache Camel offers you the interfaces for the EIPs, the base objects, commonly needed implementations, debugging tools, a configuration system, and many other helpers which will save you a ton of time when you want to implement your solution to follow the EIPs.
Take MVC. MVC is pretty simple in theory and we could implement it without any framework help. But good MVC frameworks provide us with the structure ready-to-use and have gone the extra mile and thought out all the other "side" things you need when you create a large MVC project and that's why we use them most of the time.
That's exactly what Apache Camel is for EIPs. It's a complete production-ready framework for people who want to implement their solution to follow the EIPs.
share|improve this answer
5 
This is probably the best answer to the question. All the other answers are just as confusing as all the other articles on the internet –  Nerrve Jun 21 at 6:42
 
+1 for "..debugging tools, a configuration system..". The implementation is worthless if not testable/debuggable/configurable easily! –  tair Sep 16 at 9:30
One of the things you need to understand, before you try to understand Apache Camel, are Enterprise Integration Patterns. Not everyone in the field is actually aware of them. While you can certainly read the Enterprise Integration Patterns book, a quicker way to get up to speed on them would be to read something like the Wikipedia article on Enterprise Application Integration.
One you have read and understood the subject area, you would be much more likely to understand the purpose of Apache Camel
HTH
share|improve this answer
If you are aware of Enterprise Integration Patterns, Apache Camel is one integration framework which implements all EIPs.
And you can deploy Camel as a standalone application in a web-container.
Basically, if you have to integrate several applications with different protocols and technologies, you can use Camel.
share|improve this answer
In short:
When there is a requirement to connect/integrate systems. You will probably need to connect to some data source and then process this data to match your business requirements.
In order to do that:
1) You could develop custom program that would do it (might be time consuming and hard to understand, maintain for other developer)
2) alternatively you could use Apache Camel to do it in standardised way (it has got most of the connectors already developed for you, you just need to set it up and plug your logic - called Process):
Camel will help you to:
a) consume data from any source/format

b) process this data 

c) output data to any source/format
By using Apache Camel you will make it easy to understand/maintain/extend your system to another developer. Apache Camel is developed with Enterprise Integration Patterns. Enterprise Integration Patterns - is standard that tell you how to integrate systems in a good way :-)
share|improve this answer
A definition from another perspective:
Apache Camel is an integration framework. It consists of some Java libraries, which helps you implementing integration problems on the Java platform. What this means and how it differs from APIs on the one side and an Enterprise Service Bus (ESB) on the other side is described in my article "When to use Apache Camel".
share|improve this answer