2012-04-21

Great Akka and Camel presentation video from ScalaDays 2012

ScalaDays 2012 took place recently in London.

I just wanted to highlight the presentation from Peter Gabryanczy - Migrating akka-camel module to Akka 2.x.

In this video Peter demonstrates how well Camel and Akka works together, showcasing demos with code that's less than a page, but still does powerful stuff, integrating mail, jms, file, akka, twitter, aws and whatnot.
Akka Consumer Actor using camel-jetty
The video is available from this link, where the video player is on the top right corner.

In the end of the presentation Peter talks about jobs application he has built that gathers details about new Scala jobs.

Jobs Application using Akka and Camel
Peter is using Camel 2.8, and therefore the integration with twitter and AWS dynamoDB is not yet available. However the Camel team is as usual busy and in the upcoming Camel 2.10, we have these components out of the box. So Peter can build his application using all out of the box Camel components.

In the end Peter thanks a bunch of people who have helped make this possible. I want to highlight Martin Krasser who is the original author of the akka-camel module. Martin also contributed to the Camel in Action book, where he wrote a piece on his work.

Kudos to Martin, Peter, and the Akka Team.

2012-04-10

Beta release of FuseSource Enterprise products

Today FuseSource is launching a beta release of our upcoming Fuse Enterprise products.

Rob Davies, our CTO, have written a very nice blog entry with more details about this release. I took the liberty to quote a teaser from his blog post here:
FuseSource has launched the Beta program for two new Enterprise products its launching today.
FuseSource Enterprise
These products, Fuse ESB Enterprise and Fuse MQ Enterprise,  provide the capabilities to make integration and messaging even easier to deploy and manage.
Central to the new functionality the Enterprise products  provide are Apache licensed open source projects that that FuseSource has been working on outside of the Apache Software Foundation, called Fuse Fabric and FAB (Fuse application bundles), which have been designed to work seamlessly with Apache Camel, ActiveMQ, Karaf, CXF and ServiceMix.
 You can read more about this release from Robs blog.

New Camel example to compare with Spring Integration simple example

One of the blogs I follow is from Gunnar Hillert, whom back in 2009 discovered Camel and wrote a nice blog entry. He also did some investigation of Camel alternatives as well. One of the alternatives is Spring Integration. Gunnar have since joined VMWare to be part of the Spring team.

So this morning I read the new blog post by Gunnar, how to create a Spring Integration project in STS tooling, which is posted here. The STS creates a simple out of the box example, that provides the following XML (in screenshot) as the main logic. Take a moment to see if you can figure out what it does. And then compare to the equivalent Camel example below.

Spring Integration - Simple Example created by STS tooling
And here is the Camel example using XML as well:

Apache Camel - The same example as above
Having both screenshots, I guess you can figure out that the example:

  1. reads input from the console
  2. upper case the input
  3. and prints it back on the console

This example will be provided out of the box in the upcoming Apache Camel 2.10, in the examples/camel-example-console directory. You can see the source code here.

You can run it from command line using Maven
mvn compile exec:java

And then press ctrl + c to stop the application.

Running the Camel example from command line
Or you can run it from within your IDE of choice, such as IDEA / Eclipse / FuseIDE by running the CamelConsoleMain class. For example as the screenshot shows below from IDEA.
Running the example from your editor such as IDEA

To create a new Camel project you can use the Camel Maven archetypes. Or use Fuse IDE which has a wizard just like STS to create a new Camel project.

A few notes about Camel. The example uses Spring and XML, however Camel can be used without Spring at all. We could use pure Java and define the Camel route in a Java class. You can also use Scala. And for XML we could also have used OSGi Blueprint.

In the example we use the built-in Simple language to upper case the input. You can chose to use more powerful dynamic languages such as Groovy, OGNL, Mvel, JavaScript etc as well.

With Camel you simply have more choices, and dont have to use XML at all.