Camel Overview
Camel Overview
Apa itu Apache Camel?
Apache camel (Fuse Mediation Router) merupakansebuah integrasi framework opensourceberdasarkan Enterprise Integration Patterns.Apache camel juga menyediakan bahasa (DSL) untuk mendefinisikan routing.Misalnya,ada file baru di upload,kemudian parsing,insert ke database lalu kirim notifikasi.Camel menggunakan URI untuk bekerja secara langsung dengan segala jenis Transportasi atau model messaging seperti HTTP,ActiveMQ,JMS,JBI,SCA,MINA atau CXF,serta komponen pluggable dan pilihan formatdata,camel juga merupakan sebuah perpustakaan kecil dengan defendensi minimal untuk embeding dalam aplikasi java.camel memungkinkan anda bekerja dengan API yang sama terlepas dari jeis transport yang digunakan,jadi belajar API sekali dan anda bisa berinteraksi dengan semua komponen yang di sediaka di out-of-box.Proyek-proyek berikut dapat memanfaatkan Apache Camel sebagai routing dan mesin mediasi.- Apache Servicemix -ESB dan JBI kontainer-Apache ActiveMQ -banyak digunakan sumber broker-Apache Karaf – runtime OSGI kecil berbasis dimana aplkasi dapat digunakan-Apache Mina – Kinerja tinggi NIO berbasis Framework jaringan
Enterprise Integration Patterns Dalam Camel Terdiri Dari :
Messaging System Messaging ChannelsMessage ContructionMessage RoutingMessage TransformationMessage Endpoints danSystem Management
Enterprise Integration Pattern
Integrasi Camel dan EIP
from(“a”).to(“b”)
from(“a”).choice().when().
method(“controlBean”,“isOK”).
to(“x”).end().
pipeline(“b”, “c”, “d”);
Meruvian Hunabku Team
Komponen Camel
Endpoint URI
<component-name>:<component-spec>[?params]
from(“file:/tmp?consumer.delay=1000”)
from(“bean:myBean?methodName=getOrders”)
from(“quickfix-server:server.cfg?log=#loggingFactoryBean”)
Filter Route – Java DSL
import org.apache.camel.builder.RouteBuilder;
public class FilterRoute extends RouteBuilder {public void configure() throws Exception {
.filter().xpath("/quote/product =‘widget’") from("activemq:queue:quote")
.to("mq:quote"); } }
Filter Route – Java DSL
public void configure() throws Exception { Endpoint A = endpoint("activemq:queue:quote"); Endpoint B = endpoint("mq:quote"); Predicate isWidget = xpath("/quote/product = ‘widget’"); from(A).filter(isWidget).to(B); }import org.apache.camel.builder.RouteBuilder;
import static org.apache.camel.builder.xml.XPathBuilder.xpath; public class FilterRoute extends RouteBuilder {public void configure() throws Exception {
Endpoint A = endpoint("activemq:queue:quote"); Endpoint B = endpoint("mq:quote"); Predicate isWidget = xpath("/quote/product = ‘widget’");
from(A).filter(isWidget).to(B); } }
Content Based Router
Content Based Router
Message Filter
Splitter
Bean sebagai Message Translator
Aggregator
Resequencer
Routing Slip
Error Handling
try … catch … finally
Message-Driven POJO
Camel dan ActiveMQ
${ACTIVEMQ_HOME}/conf/activemq.xml
<camelContext id=“camel”
xmlns=“http://camel.apache.org/schema/spring”>
<route>
<!-- you can add routes here -->
</route>
</camelContext>
ELVISDOTCOM333