October 23, 2008

Apache Camel presentation av Bruce Snyder på Colorado Software Summit 2008

I måndags var jag på en riktig bra presentation av Bruce Snyder (http://softwaresummit.com/2008/speakers/snyder.htm) som presenterade Apache Camel. Camel erbjuder implementation av alla pattern som Gregor Hohpe och Bobby Woolf beskriver I Enterprise Integration Pattern, men det som är fascinerade är hur enkelt det är att använda Camel.

För att implementera Content-Based Router, dvs. beroende på innehåll i XML-fil från ActiveMQ (JMS) meddelande så skickar man det vidare till olika kataloger på disk.


RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("activemq:topic:Quotes").choice()
.when(xpath("/order/item = ‘paper’")).to("file://orders/paper")
.otherwise().to("file://orders/other");
}
};


Och för att implementera Message Filer, som här filtrerar mha XPath XML-fil på disk och skickar vidare till ActiveMQ.


public class MyRouteBuilder extends RouteBuilder {
public void configure() {
from("file://orders").
filter().xpath("/quote/product = ‘widget’").
to("mqseries:WidgetQuotes");
}
}


Och för Message Translator, som här transformerar XML-fil på disk och skickar transformerad XML till HTTP.


public class MyRouteBuilder extends RouteBuilder {
public void configure() {
from("file://incoming”).
to("xslt:se/msc/mytransform.xsl").
to("http://outgoing.msc.se/foo");
}
}


Komplett lista över alla Integration Pattern, finns på http://www.enterpriseintegrationpatterns.com/toc.html. Vad också värt att notera är att man definerat ikoner för de flesta pattern, så om man skall modulera flöde i sitt projekt, så behöver man inte tänka på hur man skall representera mönstren.

Om inte detta redan har övertygat dig att använda Camel, så kolla in listan över de protokoll, som de stödjer out-of-the-box, http://activemq.apache.org/camel/components.html, saknar du något protokoll?

No comments: