View
958
Download
2
Category
Preview:
DESCRIPTION
To build up any non-trivial business processing, you may have to connect systems that are exposed by web-services, fire off events over message queues, notify users via email or social networking, and much more. Apache Camel is a lightweight integration framework that helps you connect systems in a consistent and reliable way. Focus on the business reasons behind what's being integrated, not the underlying details of how.
Citation preview
11
Simplify Enterprise Integration
WithApache Camel
Christian PostaPrincipal Consultant and Architect
12/16/13
2
• What is Integration?
• What is Apache Camel
• Why Apache Camel?
• Example
• Questions?
Agenda
3
Your speakerChristian PostaBlog: http://christianposta.com/blog
Twitter: @christianposta
Email: christian@redhat.com
ceposta@apache.org
• Principal Consultant and Architect at Red Hat (FuseSource)
• Based in Phoenix, AZ
• Committer on Apache Camel, ActiveMQ, Apollo
• PMC on ActiveMQ
• Author: Essential Camel Components DZone Refcard
Poll: Estimate how long to implement the following usecase:
Consume XML messages from a queue, call a SOAP webservice if the message is an “alert” message, store data to the file system
Options:
• Less than 1 day
• A few Days
• A few weeks
• A few months
• Cannot be done
4
5 5
What is Integration?
6
Integration?
7
Integration…
8
Just use one computer.
No integration needed.
9
• Off the shelf? Home Grown? Acquisition?
• Platforms
• Protocols / Data Formats
• Data Formats
• Timing
• Organizational mismatch
Why is integration hard?
10
Commercial Solutions?
11
Enterprise Service Bus?
12
Enterprise Service Bus…
13
• Protocol mediation
• Routing
• Transformation
• EIPs
• Start small, build up
• Open Source
• Community driven
Extract the heart of ESB
14
• Common language!!!!!
• Specific context
• Forces at work
• Concrete solution
• Guidance
• Other patterns…
• 65 patterns
Patterns FTW!
1515
What is Apache Camel?
16
Proud parents of Camel
17
Apache CamelApache Camel is an open-source,
light-weight, integration library.
Use Camel to integrate disparate systems
that speak different protocols and data formats
18
• Can carry more weight that other beasts?
• James fancied cigarettes?
• A horse designed by committee?
Why the name Camel?
ConciseApplicationMessagingExchangeLanguage
19
• Light-weight integration library
• Enterprise Integration Patterns
• Components
• Domain Specific Language
• Routing and Mediation (like an ESB?)
• Runs in any container (or stand alone)
What is Apache Camel?
20
• An integration library• Routing (content-based, dynamic, rules-engine…)
• Mediation (xformations, protocols, wire transports…)
• DSL
• Can build an ESB (real ESB.. Not just box in the middle)
• Many options based on Camel!• Fuse ESB / JBoss Fuse
• Apache ServiceMix (Karaf + Camel)
• Talend, wso2, others…
• Not tied to vendor lock-in and commercial licenses!
Not an ESB…per-se…
21
Very popular
• Used at top companies in finance, shipping,
retail/e-retail, health care, airline
reservations, etc
• E*Trade: http://goo.gl/FDqgpV
• Sabre: http://goo.gl/RrWcQ5
• CERN: http://goo.gl/vEO7zR
22
Open source
• Apache Software Foundation
• ASL v 2.0 Licensed
• Vibrant community
• Jira, mailing list, github
• Lots of contributions! Check out the components!
2323
Quick Example
24
Quick Example
File System Message Oriented Middleware
25
Quick Example
From A Send to BFilter message
26
Quick Example
from(A) to(B)filter(predicate)
27
Quick Example
from(A) .to(B).filter(isWidget)
28
Quick Example
isWidget = xpath(“/quote/product = ‘widget’”);
from(A) .filter(isWidget). to(B)
2929
Using Camel
30
Pipes and Filters
• Step by Step – “Processors” in Camel terminology
• Complex processing – “Routes”
• Flexible
• Testing
• Reuse
31
• Defined in Java, XML, Scala, Groovy
• Step by step processing of a message:
• Consumer – Listen for incoming message
• Zero or more “filters” or Processors
• Producer – Send outgoing message
• Number of processing filters, or “Processors” in Camel-speak
• EIPs
• Tranform, redirect, enrich
Camel Routes
32
Domain Specific Language
• Domain specific (integration)
• Used to build and describe Camel Routes
• Embedded within a general programming language
• Java, Spring XML, Scala, Groovy
• Take advantage of existing tools
• Fluent builders (builder pattern…)• from(“..”).enrich(“…”).filter(“..”).to(“…”);
33
Java DSLpublic class OrderProcessorRouteBuilder extends RouteBuilder {
@Override public void configure() throws Exception {
from(“activemq:orders”).choice()
.when(header(“customer-rating”).isEqualTo(“gold”)) .to(“ibmmq:topic:specialCustomer”) .otherwise() .to(“ftp://user@host/orders/regularCustomers”) .end() .log(“received new order ${body.orderId}”) .to(“ibatis:storeOrder?statementType=Insert”); }}
34
Spring XML DSL <route id=“processOrders”>
<from uri=“activemq:orders”/>
<choice>
<when>
<simple>${header.customer-rating} == ‘gold’</simple>
<to uri=“ibmmq:topic:specialCustomer”>
</when>
<otherwise>
<to uri=“ftp://user@host/orders/regularCustomers” />
</otherwise>
</choice>
<log message=“received new order ${body.orderId}”/>
<to uri=“ibatis:storeOrder?statementType=Insert”/>
</route>
35
• Message Routing
• Transformation
• Aggregation
• Splitting
• Resequencer
• Routing Slip
• Enricher
• All 65 from the book!
Enterprise Integration Patterns
36
• Prepackaged bits of code
• Highly configurable
• Maximum interoperability
• Used to build “Adapters” to existing systems
• Don’t reinvent the wheel and end up with a box
Components
37
Components
• ActiveMQ, Websphere, Weblogic (JMS)
• AMQP
• ATOM feeds
• AWS (S3, SQS, SNS, others)
• Bean
• Cache (EHCache)
• CXF (JAX-WS, JAX-RS)
• EJB
• Drools
• File
• FTP
• Google App Engine
• GMail
• HTTP
• IRC
• jclouds
• JDBC
• Jetty
• MQTT
• MyBatis
• JPA
• Spring Integration
• Spring Web Services
http://camel.apache.org/components.html
To see list of all
components!!
38
• URI format:• scheme:localPart[?options]
• scheme: identifies the “component”
• localPart: specific to the component
• options: is a list of name-value pairs
• Creates endpoints based on configuration
• Route endpoint “factories”
• Integrate with Camel Routes by creating producer/consumer endpoints
Components
from(“aws-sqs://demo?defaultVisibilityTimeout=2”)
39
Another Example
public class MyExampleRouteBuilder extends RouteBuilder {
@Override public void configure() throws Exception {
from(“aws-sqs://demo?defaultVisibilityTimeout=2”)
.setHeader(“type”).jsonpath(“$[‘type’]”)
.filter(simple(“${header.type} == ‘login’”)
.to(“jms:quote”); }}
40
Test Framework• Powerful way to test your Camel routes
• http://camel.apache.org/mock.html
• Uses Mocks
• Mocks vs Stubs? • http://martinfowler.com/articles/mocksArentStubs.html
• Provides declarative testing mechanism
• Declare
• Test
• Assert
41
Management with HawtIO
http://hawt.io
42
Developer Tooling Support
Fuse IDE
43
JBoss Fuse (aka Fuse ESB)Integrate Everything!
44
More info on JBoss Fuse…
https://www.redhat.com/products/jbossenterprisemiddleware/fuse/
http://www.jboss.org/products/fuse
4545
Live Demo
4646
Resources
47
Presentation Resources
48
Professional TrainingCamel Development
with Red Hat JBoss Fuse (Online Training)
http://www.redhat.com/training/courses/jb421r/
Red Hat JBoss A-MQ
Development and Deployment (Online Training)
https://www.redhat.com/training/courses/jb437r/
Red Hat Certificate of
Expertise in Camel Development
http://www.redhat.com/training/certifications/jbcd-camel-development/
49
Dzone Refcardz
• Camel Essential Components • http://refcardz.dzone.com/refcardz/essential-camel-components
• Essential EIP with Apache Camel• http://refcardz.dzone.com/refcardz/enterprise-integration
REFCARDZ
50
Apache Community• http://camel.apache.org
• Mailing list: users@camel.apache.org
• Nabble Archive: http://camel.465427.n5.nabble.com/Camel-Users-f465428.html
• Source code: https://git-wip-us.apache.org/repos/asf?p=camel.git
• Blogs, Articles, Examples• http://www.davsclaus.com
• http://www.christianposta.com/blog
• http://www.ossmentor.com/
• http://camel.apache.org/articles.html
• http://camel.apache.org/user-stories.html
• http://camel.apache.org/user-stories.html
51
Apache Camel Books
52
Apache Camel Books
53
Apache Camel Books
5454
QuestionsQuestions
Recommended