One year ago I published a post (http://googlielmo.blogspot.ie/2013/02/apache-camel-rocks.html) about Apache Camel (http://camel.apache.org/). Now it's time to share some stuff done with this framework.
Let's see how you can set and execute a small ESB in just 16 lines (I am serious) of Groovy code (one of the languages supported by Camel).
First of all we need to import (through Grape) the Camel dependencies to compile and run the script:
@Grab(group='org.apache.camel', module='camel-groovy', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-http', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-core', version='2.13.0')
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.language.groovy.GroovyRouteBuilder;
In particular we need the Camel core and the Groovy and HTTP components. Then we extend the abstract class org.apache.camel.language.groovy.GroovyRouteBuilder:
class MyCamelRoute extends GroovyRouteBuilder {
public void configure(){
from("http://weather.yahooapis.com/forecastrss?w=2459115").
to("file:///C:/Guglielmo/Destination");
}
}
The CamelRoute defined above gets the weather forecast data for New York City from the Yahoo Weather RSS service and save them to a local file until the ESB is up and running.
Then we define the Camel Context, add the MyCamelRoute and start it:
def camelCtx = new DefaultCamelContext()
camelCtx.addRoutes(new MyCamelRoute())
camelCtx.start()
Let's execute for 20 seconds:
sleep(20000)
and finally stop the context:
camelCtx.stop()
That's it. Here's the complete code:
@Grab(group='org.apache.camel', module='camel-groovy', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-http', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-core', version='2.13.0')
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.language.groovy.GroovyRouteBuilder;
class MyCamelRoute extends GroovyRouteBuilder {
public void configure(){
from("http://weather.yahooapis.com/forecastrss?w=2459115").
to("file:///C:/Guglielmo/Destination");
}
}
def camelCtx = new DefaultCamelContext()
camelCtx.addRoutes(new MyCamelRoute())
camelCtx.start()
sleep(20000)
camelCtx.stop()
As promised, just 16 lines of code (blank lines excluded). Starting from this example you can use different protocols and easily implement a more complex Route.
Let's see how you can set and execute a small ESB in just 16 lines (I am serious) of Groovy code (one of the languages supported by Camel).
First of all we need to import (through Grape) the Camel dependencies to compile and run the script:
@Grab(group='org.apache.camel', module='camel-groovy', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-http', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-core', version='2.13.0')
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.language.groovy.GroovyRouteBuilder;
In particular we need the Camel core and the Groovy and HTTP components. Then we extend the abstract class org.apache.camel.language.groovy.GroovyRouteBuilder:
class MyCamelRoute extends GroovyRouteBuilder {
public void configure(){
from("http://weather.yahooapis.com/forecastrss?w=2459115").
to("file:///C:/Guglielmo/Destination");
}
}
The CamelRoute defined above gets the weather forecast data for New York City from the Yahoo Weather RSS service and save them to a local file until the ESB is up and running.
Then we define the Camel Context, add the MyCamelRoute and start it:
def camelCtx = new DefaultCamelContext()
camelCtx.addRoutes(new MyCamelRoute())
camelCtx.start()
Let's execute for 20 seconds:
sleep(20000)
and finally stop the context:
camelCtx.stop()
That's it. Here's the complete code:
@Grab(group='org.apache.camel', module='camel-groovy', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-http', version='2.13.0')
@Grab(group='org.apache.camel', module='camel-core', version='2.13.0')
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.language.groovy.GroovyRouteBuilder;
class MyCamelRoute extends GroovyRouteBuilder {
public void configure(){
from("http://weather.yahooapis.com/forecastrss?w=2459115").
to("file:///C:/Guglielmo/Destination");
}
}
def camelCtx = new DefaultCamelContext()
camelCtx.addRoutes(new MyCamelRoute())
camelCtx.start()
sleep(20000)
camelCtx.stop()
As promised, just 16 lines of code (blank lines excluded). Starting from this example you can use different protocols and easily implement a more complex Route.
Comments
Post a Comment