Technically Apache Camel can be boldly called as ‘ Integration Framework’. Lets talk about this in a simple way.
You wanted to integrate two different systems ? ( Now lets take a File system & Messaging system/Message Broker ). You need to send files from a file system and send it to a messaging queue in batch mode !
What are the ways to do it ? Write a Java program.. call the methods, import packages, create classes, compile, handle exceptions and finally integration is done !
What are the problems here ?
1. Write a program from scratch !
2. Create and modify the program whenever you want a new feature !
3. Will your program be friendly for a highly scalable architecture ?
4. And many more performance related questions a Enterprise Architect can ask for !
Why need to think all this ? Here comes the advantage, Apache Camel is a Integration Framework which comes with numerous components with set of standard funtionalities !
Now you want to integrate a File system and MB ?
1. Just take File Component and JMS Component
2. Just fill the parameters: Where the file is located? What do you want do with the file ? Move it or Copy it ? What is the MB connection URL ? What is the Queue name ?
3. Just deploy it in any container you want ! Thats it. Even if you don’t have a container ? Just run it standalone !
4. And the great advantage is, You don’t need to worry if you are not really good at Java like me
5. And you can use your favorite DSL to write a Camel Application. Like Spring, Scala….
Camel is supporting more than 50 components now, the popular ones: File, JMS, JDBC, AMQP, CXF, AWS, Zookeeper, Twitter, Cache, HTTP, and many more camel components supporting diversified protocols.
I found an interesting presentation where it explains Camel more better. And the following slide shows about ‘ Replaceable container’