SlideShare a Scribd company logo
Leichtgewichtige Enterprise-Integration mit Apache Camel  Christian Meder | inovex GmbH
Agenda Warum Apache Camel ? Enterprise Integration Patterns Camel Konzepte DSL Beispiel Komponenten Möglichkeiten Fazit
Enterprise-Integration Enterprise Application Integration (EAI)‏ Service Oriented Architecture (SOA)‏ Webservices (WS-*)‏ Enterprise Service Bus (ESB)‏ Message Oriented Middleware (MOM)‏ XML SOAP WSDL HTTP Binärformate JMS
Nur für Spezialisten ?
Apache Camel
Das Buch Gregor Hohpe, Bobby Woolf Enterprise Integration Patterns “ The Bible for Enterprise Application Integration”  (amazon.com)‏
Cast
Messaging remove location dependencies data format dependencies temporal dependencies
Enterprise Integration Patterns 65 patterns Messaging Endpoints Message Construction Messaging Channels Message Routing Message Transformation System Management
Enterprise Integration Patterns  (Basics)‏ Channel Message Pipes and Filters Message Router Message Translator Message Endpoint
EIP (Routing/Transformation)‏ Message Filter Splitter Aggregator Resequencer Content Enricher Content Filter Normalizer
Beispiel (VeS)‏ Vollständig erfundenes Stammdatensystem
Apache Camel Wurzeln in servicemix-eip, activemq activemq, servicemix, cxf  communities implementiert 40 EIP camel-core: commons-logging, jaxb, activation  1.3.0 April 2008 (208 tasks), 1.4.0 Juli 2008 (261 tasks), 1.5.0 Oktober 2008 (266 tasks)‏ kommerzieller Support
Camel (Konzepte)‏ CamelContext Component Endpoint Message/Exchange Processor RouteBuilder/Java DSL
CamelContext Spring: <camelContext id=&quot;camel&quot; xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;> </camelContext> Pure Java: CamelContext camel = new DefaultCamelContext(); camelContext.start();
Component Spring: <bean id=&quot;activemq&quot; class=&quot;org.apache.camel.component.jms.JmsComponent&quot;> <property name=&quot;connectionFactory&quot;> <bean class=&quot;org.apache.activemq.ActiveMQConnectionFactory&quot;> <property name=&quot;brokerURL&quot; value=&quot;vm://localhost?broker.persistent=false&quot;/> </bean> </property> </bean> Pure Java: Component mailComponent = new org.apache.camel.component.mail.MailComponent();
Endpoint Spring: <cxf:cxfEndpoint id=&quot;routerEndpoint&quot; address=&quot;http://localhost:9003/CamelContext/RouterPort&quot;  serviceClass=&quot;org.apache.hello_world_soap_http.GreeterImpl&quot;/> URI: cxf:bean:routerEndpoint Pure Java: Endpoint endpoint = component.createEndpoint(&quot;log:com.mycompany.part2&quot;); URI: log:com.mycompany.part2
Message/Exchange/Processor Pure Java: Exchange exchange = endpoint.createExchange(); exchange.getIn().setBody(name); public class MyProcessor implements Processor { public void process(Exchange exchange) throws Exception { // do something... } } Processor myProcessor = new MyProcessor();
RouteBuilder Spring: <camelContext xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;> <route> <from uri=&quot;activemq:Input&quot;/> <bean ref=&quot;myBeanName&quot; method=&quot;doTransform&quot;/> <to uri=&quot;activemq:Output&quot;/> </route> </camelContext>
RouteBuilder (Java DSL)‏ Pure Java: from(&quot;activemq:Input&quot;).beanRef(&quot;myBeanName&quot;, &quot;doTransform&quot;).to(&quot;activemq:Output&quot;); RouteBuilder builder = new RouteBuilder() { public void configure() { from(&quot;queue:a&quot;).filter(header(&quot;foo&quot;).isEqualTo(&quot;bar&quot;)).to(&quot;queue:b&quot;); from(&quot;queue:c&quot;).choice()‏ .when(header(&quot;foo&quot;).isEqualTo(&quot;bar&quot;)).to(&quot;queue:d&quot;)‏ .when(header(&quot;foo&quot;).isEqualTo(&quot;cheese&quot;)).to(&quot;queue:e&quot;)‏ .otherwise().to(&quot;queue:f&quot;); } }; myCamelContext.addRoutes(builder);
RouteBuilder (Scala DSL beta)‏ class MyRouteBuilder extends RouteBuilder { &quot;direct:a&quot; --> &quot;mock:a&quot; &quot;direct:b&quot; to &quot;mock:b&quot;  }
VeS (Splitter)‏ <camelContext id=&quot;camel&quot; xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;> <route> <from uri=&quot;cxf:requests&quot;/> <splitter> <xpath>/login | /account</xpath> <to uri=&quot;direct:splitrequest&quot;/> </splitter> </route> </camelContext>
VeS (Router)‏ RouteBuilder builder = new RouteBuilder() { public void configure() { from(&quot;direct:splitrequest&quot;).choice().when(xpath(&quot;/login&quot;)).to(&quot;seda:loginData&quot;)‏ .when(xpath(&quot;/account&quot;)).to(&quot;seda:accountData&quot;); } };
VeS (2. Router)‏ RouteBuilder builder = new RouteBuilder() { public void configure() { from(&quot;seda:accountData&quot;).choice().when(groovy(“request.account.id =~ /A.*/”))‏ .to(&quot;seda:oldAccountData&quot;)‏ .when(groovy(&quot;request.account.id =~ /B.*/&quot;)).to(&quot;seda:newAccountData&quot;); } };
VeS (Transformation)‏ <route> <from uri=&quot;seda:loginData&quot;/> <bean ref=&quot;loginBackend&quot; method=&quot;doTransform&quot;/> <to uri=&quot;seda:loginBackend&quot;/> </route>
Expression Languages from(&quot;queue:a&quot;).filter( header(&quot;foo&quot;).isEqualTo(&quot;bar&quot;) ).to(&quot;queue:b&quot;); Expression Language  filter().el(&quot;${in.headers['My Header'] == 'bar'}&quot;)‏ OGNL  filter().ognl(&quot;request.headers.foo = 'bar'&quot;)‏ Javascript  filter().javaScript(&quot;request.headers.get('user') == 'admin'&quot;)‏ Groovy  filter().groovy(&quot;request.lineItems.any { i -> i.value > 100 }&quot;)‏ Python  filter().python(&quot;request.headers['user'] == 'admin'&quot;)‏ Ruby  filter().ruby(&quot;$request.headers['user'] == 'admin'&quot;)‏ Xpath  filter().xpath(&quot;//foo&quot;)‏ Xquery  filter().xquery(&quot;//foo&quot;)‏ Scripting languages via JSR223
Components ActiveMQ (activemq:FOO.BAR)‏ Atom (atom://atomUri)‏ CXF (cxf:bean:cxfEndpoint)‏ Spring events (spring-event://default)‏ File ( file://inputdir/?delete=true )‏ Financial Information eXchange (fix://configurationResource)‏
Components Flatpack (flatpack:fixed:foo.pzmap.xml)‏ FTP (ftp://camelrider@localhost:21/public/downloads)‏ HL7 (Health Level 7)‏ HTTP/Jetty JBI (jbi:service:http://foo.bar.org/Service)‏ Java Content Repository (jcr://user:pass@repository/repo)‏
Components JMS (jms:FOO.BAR)‏ JPA (jpa:account)‏ LDAP (ldap:localhost:1024)‏ Log (log:org.camel.example.Foo)‏ Mail (imap://admin@mymailserver.com)‏ Mina (mina:tcp://localhost:6200?textline=true)‏ Mock (mock:foo)‏ RMI (rmi://localhost:1099/foo)‏
Components Seda (seda:start)‏ Smooks (EDI parsing)‏ Test (test:file://data/expectedOutput)‏ Timer (timer://foo?fixedRate=true&period=60000)‏ Velocity (velocity:com/acme/MyResponse.vm)‏ Vm (vm:foo)‏ Xmpp (xmpp://fromAlias/toAlias)‏
Möglichkeiten BAM (Wiretap Pattern)‏ Bean Integration Visualisierung Komponenten- erstellung
Fazit Apache Camel ist klein leicht fokussiert modular Don't get the hump, try Camel today.
Credits the camel riders IBM System 360 (CC cote on flickr)‏ the camel's way (CC lovelypetal on flickr)‏

More Related Content

PPT
Rich faces
PPT
Processing XML with Java
PPT
What's new in Rails 2?
PPT
Changing Template Engine
PPTX
jQuery from the very beginning
PPT
KMUTNB - Internet Programming 5/7
ODP
JavaScript and jQuery Fundamentals
PDF
RESTful API Design & Implementation with CodeIgniter PHP Framework
Rich faces
Processing XML with Java
What's new in Rails 2?
Changing Template Engine
jQuery from the very beginning
KMUTNB - Internet Programming 5/7
JavaScript and jQuery Fundamentals
RESTful API Design & Implementation with CodeIgniter PHP Framework

What's hot (20)

PDF
Bullet: The Functional PHP Micro-Framework
PPT
WordPress and Ajax
PDF
ODP
JavaScript APIs In Focus
PPT
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
ODP
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
PPTX
RESTful API 제대로 만들기
ODP
Introduction to Web Programming with Perl
PDF
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
PDF
Adventurous Merb
PDF
Introduction to Sightly
PPTX
Effective C++/WinRT for UWP and Win32
PPTX
Building Progressive Web Apps for Windows devices
PDF
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
PDF
OSDC 2009 Rails Turtorial
PDF
Crafting Quality PHP Applications (ConFoo YVR 2017)
PDF
Rails antipatterns
PDF
Rails antipattern-public
PDF
JSON and the APInauts
TXT
Jsp Notes
Bullet: The Functional PHP Micro-Framework
WordPress and Ajax
JavaScript APIs In Focus
Building Complex GUI Apps The Right Way. With Ample SDK - SWDC2010
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
RESTful API 제대로 만들기
Introduction to Web Programming with Perl
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Adventurous Merb
Introduction to Sightly
Effective C++/WinRT for UWP and Win32
Building Progressive Web Apps for Windows devices
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
OSDC 2009 Rails Turtorial
Crafting Quality PHP Applications (ConFoo YVR 2017)
Rails antipatterns
Rails antipattern-public
JSON and the APInauts
Jsp Notes
Ad

Similar to Apache Camel - WJax 2008 (20)

PDF
Riding Apache Camel
ODP
Interoperable Web Services with JAX-WS
PDF
Service Oriented Integration With ServiceMix
PPT
PPT
Component and Event-Driven Architectures in PHP
PPT
Introduction To ASP.NET MVC
PPTX
Spring Surf 101
PPT
Aspnet2 Overview
PPTX
Combres
ODP
Architecting Web Services
PPT
Struts2
PPTX
ASP.NET MVC
PPT
Spring Capitulo 05
ODP
Real time web (Orbited) at BCNE3
ODP
Developing and testing ajax components
PPT
Getting the Most Out of OpenSocial Gadgets
PPT
Boston Computing Review - Java Server Pages
PPT
I Feel Pretty
PPT
JavaScript
PPT
Internet Explorer 8 for Developers by Christian Thilmany
Riding Apache Camel
Interoperable Web Services with JAX-WS
Service Oriented Integration With ServiceMix
Component and Event-Driven Architectures in PHP
Introduction To ASP.NET MVC
Spring Surf 101
Aspnet2 Overview
Combres
Architecting Web Services
Struts2
ASP.NET MVC
Spring Capitulo 05
Real time web (Orbited) at BCNE3
Developing and testing ajax components
Getting the Most Out of OpenSocial Gadgets
Boston Computing Review - Java Server Pages
I Feel Pretty
JavaScript
Internet Explorer 8 for Developers by Christian Thilmany
Ad

More from inovex GmbH (20)

PDF
lldb – Debugger auf Abwegen
PDF
Are you sure about that?! Uncertainty Quantification in AI
PDF
Why natural language is next step in the AI evolution
PDF
WWDC 2019 Recap
PDF
Network Policies
PDF
Interpretable Machine Learning
PDF
Jenkins X – CI/CD in wolkigen Umgebungen
PDF
AI auf Edge-Geraeten
PDF
Prometheus on Kubernetes
PDF
Deep Learning for Recommender Systems
PDF
Azure IoT Edge
PDF
Representation Learning von Zeitreihen
PDF
Talk to me – Chatbots und digitale Assistenten
PDF
Künstlich intelligent?
PDF
Dev + Ops = Go
PDF
Das Android Open Source Project
PDF
Machine Learning Interpretability
PDF
Performance evaluation of GANs in a semisupervised OCR use case
PDF
People & Products – Lessons learned from the daily IT madness
PDF
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
lldb – Debugger auf Abwegen
Are you sure about that?! Uncertainty Quantification in AI
Why natural language is next step in the AI evolution
WWDC 2019 Recap
Network Policies
Interpretable Machine Learning
Jenkins X – CI/CD in wolkigen Umgebungen
AI auf Edge-Geraeten
Prometheus on Kubernetes
Deep Learning for Recommender Systems
Azure IoT Edge
Representation Learning von Zeitreihen
Talk to me – Chatbots und digitale Assistenten
Künstlich intelligent?
Dev + Ops = Go
Das Android Open Source Project
Machine Learning Interpretability
Performance evaluation of GANs in a semisupervised OCR use case
People & Products – Lessons learned from the daily IT madness
Infrastructure as (real) Code – Manage your K8s resources with Pulumi

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation theory and applications.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
PDF
Approach and Philosophy of On baking technology
PPTX
Cloud computing and distributed systems.
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Chapter 3 Spatial Domain Image Processing.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation theory and applications.pdf
The AUB Centre for AI in Media Proposal.docx
Understanding_Digital_Forensics_Presentation.pptx
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
Approach and Philosophy of On baking technology
Cloud computing and distributed systems.
Building Integrated photovoltaic BIPV_UPV.pdf
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Unlocking AI with Model Context Protocol (MCP)
Per capita expenditure prediction using model stacking based on satellite ima...
20250228 LYD VKU AI Blended-Learning.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...

Apache Camel - WJax 2008

  • 1. Leichtgewichtige Enterprise-Integration mit Apache Camel Christian Meder | inovex GmbH
  • 2. Agenda Warum Apache Camel ? Enterprise Integration Patterns Camel Konzepte DSL Beispiel Komponenten Möglichkeiten Fazit
  • 3. Enterprise-Integration Enterprise Application Integration (EAI)‏ Service Oriented Architecture (SOA)‏ Webservices (WS-*)‏ Enterprise Service Bus (ESB)‏ Message Oriented Middleware (MOM)‏ XML SOAP WSDL HTTP Binärformate JMS
  • 6. Das Buch Gregor Hohpe, Bobby Woolf Enterprise Integration Patterns “ The Bible for Enterprise Application Integration” (amazon.com)‏
  • 8. Messaging remove location dependencies data format dependencies temporal dependencies
  • 9. Enterprise Integration Patterns 65 patterns Messaging Endpoints Message Construction Messaging Channels Message Routing Message Transformation System Management
  • 10. Enterprise Integration Patterns (Basics)‏ Channel Message Pipes and Filters Message Router Message Translator Message Endpoint
  • 11. EIP (Routing/Transformation)‏ Message Filter Splitter Aggregator Resequencer Content Enricher Content Filter Normalizer
  • 12. Beispiel (VeS)‏ Vollständig erfundenes Stammdatensystem
  • 13. Apache Camel Wurzeln in servicemix-eip, activemq activemq, servicemix, cxf communities implementiert 40 EIP camel-core: commons-logging, jaxb, activation 1.3.0 April 2008 (208 tasks), 1.4.0 Juli 2008 (261 tasks), 1.5.0 Oktober 2008 (266 tasks)‏ kommerzieller Support
  • 14. Camel (Konzepte)‏ CamelContext Component Endpoint Message/Exchange Processor RouteBuilder/Java DSL
  • 15. CamelContext Spring: <camelContext id=&quot;camel&quot; xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;> </camelContext> Pure Java: CamelContext camel = new DefaultCamelContext(); camelContext.start();
  • 16. Component Spring: <bean id=&quot;activemq&quot; class=&quot;org.apache.camel.component.jms.JmsComponent&quot;> <property name=&quot;connectionFactory&quot;> <bean class=&quot;org.apache.activemq.ActiveMQConnectionFactory&quot;> <property name=&quot;brokerURL&quot; value=&quot;vm://localhost?broker.persistent=false&quot;/> </bean> </property> </bean> Pure Java: Component mailComponent = new org.apache.camel.component.mail.MailComponent();
  • 17. Endpoint Spring: <cxf:cxfEndpoint id=&quot;routerEndpoint&quot; address=&quot;http://localhost:9003/CamelContext/RouterPort&quot; serviceClass=&quot;org.apache.hello_world_soap_http.GreeterImpl&quot;/> URI: cxf:bean:routerEndpoint Pure Java: Endpoint endpoint = component.createEndpoint(&quot;log:com.mycompany.part2&quot;); URI: log:com.mycompany.part2
  • 18. Message/Exchange/Processor Pure Java: Exchange exchange = endpoint.createExchange(); exchange.getIn().setBody(name); public class MyProcessor implements Processor { public void process(Exchange exchange) throws Exception { // do something... } } Processor myProcessor = new MyProcessor();
  • 19. RouteBuilder Spring: <camelContext xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;> <route> <from uri=&quot;activemq:Input&quot;/> <bean ref=&quot;myBeanName&quot; method=&quot;doTransform&quot;/> <to uri=&quot;activemq:Output&quot;/> </route> </camelContext>
  • 20. RouteBuilder (Java DSL)‏ Pure Java: from(&quot;activemq:Input&quot;).beanRef(&quot;myBeanName&quot;, &quot;doTransform&quot;).to(&quot;activemq:Output&quot;); RouteBuilder builder = new RouteBuilder() { public void configure() { from(&quot;queue:a&quot;).filter(header(&quot;foo&quot;).isEqualTo(&quot;bar&quot;)).to(&quot;queue:b&quot;); from(&quot;queue:c&quot;).choice()‏ .when(header(&quot;foo&quot;).isEqualTo(&quot;bar&quot;)).to(&quot;queue:d&quot;)‏ .when(header(&quot;foo&quot;).isEqualTo(&quot;cheese&quot;)).to(&quot;queue:e&quot;)‏ .otherwise().to(&quot;queue:f&quot;); } }; myCamelContext.addRoutes(builder);
  • 21. RouteBuilder (Scala DSL beta)‏ class MyRouteBuilder extends RouteBuilder { &quot;direct:a&quot; --> &quot;mock:a&quot; &quot;direct:b&quot; to &quot;mock:b&quot; }
  • 22. VeS (Splitter)‏ <camelContext id=&quot;camel&quot; xmlns=&quot;http://activemq.apache.org/camel/schema/spring&quot;> <route> <from uri=&quot;cxf:requests&quot;/> <splitter> <xpath>/login | /account</xpath> <to uri=&quot;direct:splitrequest&quot;/> </splitter> </route> </camelContext>
  • 23. VeS (Router)‏ RouteBuilder builder = new RouteBuilder() { public void configure() { from(&quot;direct:splitrequest&quot;).choice().when(xpath(&quot;/login&quot;)).to(&quot;seda:loginData&quot;)‏ .when(xpath(&quot;/account&quot;)).to(&quot;seda:accountData&quot;); } };
  • 24. VeS (2. Router)‏ RouteBuilder builder = new RouteBuilder() { public void configure() { from(&quot;seda:accountData&quot;).choice().when(groovy(“request.account.id =~ /A.*/”))‏ .to(&quot;seda:oldAccountData&quot;)‏ .when(groovy(&quot;request.account.id =~ /B.*/&quot;)).to(&quot;seda:newAccountData&quot;); } };
  • 25. VeS (Transformation)‏ <route> <from uri=&quot;seda:loginData&quot;/> <bean ref=&quot;loginBackend&quot; method=&quot;doTransform&quot;/> <to uri=&quot;seda:loginBackend&quot;/> </route>
  • 26. Expression Languages from(&quot;queue:a&quot;).filter( header(&quot;foo&quot;).isEqualTo(&quot;bar&quot;) ).to(&quot;queue:b&quot;); Expression Language filter().el(&quot;${in.headers['My Header'] == 'bar'}&quot;)‏ OGNL filter().ognl(&quot;request.headers.foo = 'bar'&quot;)‏ Javascript filter().javaScript(&quot;request.headers.get('user') == 'admin'&quot;)‏ Groovy filter().groovy(&quot;request.lineItems.any { i -> i.value > 100 }&quot;)‏ Python filter().python(&quot;request.headers['user'] == 'admin'&quot;)‏ Ruby filter().ruby(&quot;$request.headers['user'] == 'admin'&quot;)‏ Xpath filter().xpath(&quot;//foo&quot;)‏ Xquery filter().xquery(&quot;//foo&quot;)‏ Scripting languages via JSR223
  • 27. Components ActiveMQ (activemq:FOO.BAR)‏ Atom (atom://atomUri)‏ CXF (cxf:bean:cxfEndpoint)‏ Spring events (spring-event://default)‏ File ( file://inputdir/?delete=true )‏ Financial Information eXchange (fix://configurationResource)‏
  • 28. Components Flatpack (flatpack:fixed:foo.pzmap.xml)‏ FTP (ftp://camelrider@localhost:21/public/downloads)‏ HL7 (Health Level 7)‏ HTTP/Jetty JBI (jbi:service:http://foo.bar.org/Service)‏ Java Content Repository (jcr://user:pass@repository/repo)‏
  • 29. Components JMS (jms:FOO.BAR)‏ JPA (jpa:account)‏ LDAP (ldap:localhost:1024)‏ Log (log:org.camel.example.Foo)‏ Mail (imap://admin@mymailserver.com)‏ Mina (mina:tcp://localhost:6200?textline=true)‏ Mock (mock:foo)‏ RMI (rmi://localhost:1099/foo)‏
  • 30. Components Seda (seda:start)‏ Smooks (EDI parsing)‏ Test (test:file://data/expectedOutput)‏ Timer (timer://foo?fixedRate=true&period=60000)‏ Velocity (velocity:com/acme/MyResponse.vm)‏ Vm (vm:foo)‏ Xmpp (xmpp://fromAlias/toAlias)‏
  • 31. Möglichkeiten BAM (Wiretap Pattern)‏ Bean Integration Visualisierung Komponenten- erstellung
  • 32. Fazit Apache Camel ist klein leicht fokussiert modular Don't get the hump, try Camel today.
  • 33. Credits the camel riders IBM System 360 (CC cote on flickr)‏ the camel's way (CC lovelypetal on flickr)‏