How to Connect MongoDB Using Apache Camel
Apache Camel provides many components to interact with external systems. Here is one simple example of how to connect MongoDB using the Apache Camel route.
Join the DZone community and get the full member experience.
Join For FreeApache Camel provides many components to interact with external systems. Here is one simple example of how to connect MongoDB using the Apache Camel route.
1. Create a Maven project and add the below dependencies:
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-mongodb</artifactId>
<version>2.12.1</version>
</dependency>
</dependencies>
2. Create a Camel route:
packagecom.vinod.test;
importorg.apache.camel.builder.RouteBuilder;
publicclass CamelMongoRoute extends RouteBuilder {
@Override
publicvoid configure()throwsException{
from("jetty:http://localhost:8181/mongoSelect")
.to("mongodb:myDb?database=customerdb&collection=customer&operation=findAll");
from("jetty:http://localhost:8181/mongoInsert")
.to("mongodb:myDb?database=customerdb&collection=customer&operation=insert");
}
}
3. Create application context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camel:camelContext id="camel-client">
<camel:routeBuilder ref="vinodroute" />
</camel:camelContext>
<bean id="myDb" class="com.mongodb.Mongo">
<constructor-arg index="0" value="localhost" />
</bean>
<bean id="vinodroute" class="com.vinod.test.CamelMongoRoute" />
</beans>
4. Create a main program. This main program will start the routes:
package com.vinod.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CamelMongoMain {
@SuppressWarnings("resource")
public static void main(String[] args) {
new ClassPathXmlApplicationContext("application-context.xml");
}
}
5. Run it!
5a. Start MongoDB.
5b. Run the main program.
5c. Use the REST client to give inputs.
6. Insert data into MongoDB. The URL is http://localhost:8181/mongoInsert
Request body= {name:"Vinod K K"}
7. Retrieve data. Again, the URL is http://localhost:8181/mongoSelect.
Response from mongodb = [{ "_id" : { "$oid" : "5419cefb0364771a127e352c"} , "name" : "Vinod K K"}]
Data in mongodb
> use customerdb
switched to db customerdb
> show collections
customer
system.indexes
> db.customer.find()
{ "_id" : ObjectId("5419cefb0364771a127e352c"), "name" : "Vinod K K" }
>
You're done! You can download the example here.
Opinions expressed by DZone contributors are their own.
Comments