Links

  • 1. Sogeti
  • 2. JBoss
  • 3. IBM
  • 4. Oracle
  • 5. SpringSource
  • 6. NL-JUG
  • 7. Java

Archives

Syndication  RSS 2.0

RSS 1.0
RSS 2.0

Bookmark this site

Add 'JCN Blog' site to delicious  Add 'JCN Blog' site to technorati  Add 'JCN Blog' site to digg  Add 'JCN Blog' site to dzone

Posted by Tobias Groothuyse at 11:24 on Friday 11 April    Add 'Take a ride with Apache Camel' site to delicious  Add 'Take a ride with Apache Camel' site to technorati  Add 'Take a ride with Apache Camel' site to digg  Add 'Take a ride with Apache Camel' site to dzone

Apache Camel is de message routing API die onstaan is uit het ServiceMix project (zie een van de vorige posts). Apache Camel implementeerdt alle bekende enterprise integration patterns zoals beschreven in dit breed geaccepteerde boek. Naast deze patterns voegt Camel zelf nog een aantal nuttige patterns toe die uit noodzaak geboren zijn. Het krachtige aan Camel is dat alle patterns te gebruiken zijn middels een ontzettende makkelijke (Builder stijl) API. Ik denk dat een paar voorbeelden boekdelen spreken:

Content based routing:
from(“seda:a”).choice().when(header(foo)).isEqual(bar)).to(seda:b).otherwise().to(otherEndpoint);

Message Filter:
from(“activemq:topic:Quotes”).filter().xpath(“/quote/product = “widget’”).to(“mqseries:WidgetQuotes”);

Splitter:
from(“file://orders”).splitter(body().tokenize(“\n”)).to(“activemq:Order.Items”);

Custom logica binnen een eigen POJO:
from(“activemq:Topic:Orders”).beanRef(“myBean”).to(“activemq:Topic:Sales”);

Op deze manier is wordt message routing een stuk simpeler. Camel maakt gebruik van het Spring framework voor dependency injection en het gebruike van de application context, in dit geval de camelContext. Op dit moment wordt er gewerkt aan een grafische interface om routering te definieren. Ik denk zelf dat dat niet perse nodig is omdat deze stijl al erg goed leesbaar is.

Camel maakt het ook mogelijk om endpoints te binden aan je java classes. Onderwater gebeurt dit middels MessageDriven beans alleen de configuratie en het gebruik is stukken makkelijker:

@MessageDriven(uri=”activemq”)
public void onCheese(

@Xpath(“/foo/bar”) String name,
@Header(“JMSCorrelationID”) String id {

}

Bovenstaande methode zal worden aangeroepen voor alle berichten die via de activemq binnenkomen waarbij de name parameter automatisch gevuld wordt met de waarde uit het bericht gedefinieerd door de geannoteerde XPath expressie. De id parameter wordt eveneens gevuld met de gespecificeerde header attribuut van het bericht.


© 2020 Java Competence Network. All Rights Reserved.