SlideShare a Scribd company logo
RED HAT
FUSE TRAINING
JBoss Fuse and Camel
3
Keywords
● Apache Camel
● Enterprise Integration Patterns
● Components, Routes, Endpoints, Messages,
Processors
4
Apache Camel
• Powerful Integration Framework
– Based on known Enterprise Integration Patterns
– Framework do the heavy lifting
– You can focus on business problem
– Not "reinventing the wheel"
• Use Case : a really simple way to do integration
– Started as a Sub-project of ActiveMQ in March 2007
– 36 committers (15 work for Red Hat)
– 80-100k artifact downloads a month
– 120k website views a month
– 1000 user mailing list posts per month
– 130 + Components and growing
– Most widely used integration framework on the planet
5
Enterprise Integration Patterns
http://www.enterpriseintegrationpatterns.com/
6
Camel implements most EIP Patterns
http://camel.apache.org/enterprise-integration-patterns.html
• Messaging systems
• Messaging Channels
• Message Routing
• Message transformation
• Message Endpoints
Message router Message translator
Dead Letter Channel Message Bus
Recipient List Splitter Aggregator
Content Enricher Content Filter
Event Driven Consumer Polling Consumer
7
Example : complex deployment
Source : JBoss Fuse success story – Major Retail Pharmacy Chain
8
JBoss Fuse Architecture :
routes, components, endpoints
From : “Camel in Action”, by Claus Ibsen
9
Camel Context
• CamelContext is the container of many Camel Services
• Instance of the Camel runtime
From : “Camel in Action”, by Claus Ibsen
10
What is a Camel Component?
• Components are the main extension point in Camel
• Components are used to manage everything in Camel :
◾ Data Transport
◾ Data Formatting
◾ ... customized behaviour
• From a programming point of view they :
◾ Have a name
◾ Act as a Factory of endpoints
11
What is a Camel Processor?
• Core Camel concept : node capable of using, creating, or
modifying an incoming exchange
• During routing exchanges flow from one processor to another
public interface Processor {
  /**
   * Processes the message exchange
   * 
   * @param exchange the message exchange
   * @throws Exception if an internal processing error has occurred.
   */
  void process(Exchange exchange) throws Exception;
}
12
EIP Patterns and Processors
• Implement the actions of the EIP between the endpoints
• Perform actions on the message in the Route (e.g modify, use,
create, enrich ...)
• Processors can be linked in a pipeline flow
• Processor examples :
Splitter Message Filter
Aggregator Message Router
Content Enricher
13
What is a Camel route?
• A Route is the step-by-step movement of a message:
◾ From a “listening” endpoint in the role of consumer
◾ Through a processing component - enterprise integration pattern,
processor, interceptor, etc. (optional)
◾ To a target endpoint in the role of producer
• May involve any number of processing components that
modify the original message and/or redirect it
◾ Use expressions and predicates
• An application developer specifies routes using:
◾ Spring configuration files
◾ Java Domain Specific Language (DSL)
14
Routes ....
• By decoupling clients from servers, and producers
from consumers, routes can
◾ Decide dynamically what server a client will invoke
◾ Provide a flexible way to add extra processing
◾ Allow for clients and servers to be developed independently
◾ Allow for clients of servers to be stubbed out (using mocks)
for testing purposes
◾ Foster better design practices by connecting disparate
systems that do one thing well
◾ Enhance features and functionality of some systems (such
as message brokers and ESBs)
• Each route in Camel has a unique identifier that’s used
for logging, debugging, monitoring, and starting and
stopping routes.
15
Expressions and Predicates
• Expressions return a selection of nodes for processing
◾ XPath is used for parsing XML payloads
• Predicates are conditional expressions
◾ Used to add logical branching to routes
• Camel supports other expression languages
◾
XQuery, Simple, Bean, OGNL, JavaScript, Groovy, Ruby ...
16
What is a Camel Endpoint?
• An endpoint is something that can create or receive messages,
for example, an FTP server, a Web Service, or a JMS broker
• Camel allows you to specifiy endpoints using simple URIs
◾ ftp://john@localhost/ftp?password=nhoj
◾ activemq:queue:MyQueue
◾ timer://myTimer?period=2000
• Consumer Endpoint, source at beginning of Route, 'from'
• Producer Endpoint, sink at end of Route, 'to'
17
Endpoint Syntax
• Endpoint URI format:
scheme:remainingURI[?options]
• Where:
• scheme identifies the component
– Scheme is the registered service name for activating a component in Camel
– Triggers dynamic loading of the component
– Maps to a specific instance of org.apache.camel.Component
• options is a list of name/value pairs
option1=value1&option2=value2&option3=value3
from("ftp://john@localhost/ftp?password=nhoj")
.to("xslt:MyTransform.xslt")
.to("activemq:queue:MyQueue")
Consumer endpoint
Producer
endpoint
Parameters
18
Endpoint Functionality
• Endpoints are either message source or message sink
• Two roles :
◾ Consumer
– Appears at the beginning of a routing rule (for example, in a from() command
or in a <from ...> element, depending on the DSL used)
– Receives messages from an external source and creates a message
exchange object, which the routing rule processes.
◾ Producer
– Appears at the end of a routing rule (for example, in a to() command or in a
<to ...> element, depending on the DSL used)
– Sends the current message wrapped in the message exchange object to an
external target destination.
19
Camel Components in practice
Use Case : Receive orders from ActiveMQ queue and
based on the type of message forward to appropriate
queue (ActiveMQ or Websphere MQ)
20
Example 1 of 3
from newOrder
choice
when isWidget to widget
otherwise to gadget
21
Example 2 of 3
from(newOrder)
.choice()
.when(isWidget).to(widget)
.otherwise.to(gadget)
22
Example 3 of 3
Endpoint newOrder = endpoint("activemq:queue:newOrder");
Predicate isWidget = xpath("/order/product = 'widget'");
Endpoint widget = endpoint("activemq:queue:widget");
Endpoint gadget = endpoint("wmq:queue:gadget");
from(newOrder)
.choice()
.when(isWidget).to(widget)
.otherwise.to(gadget)
23
Example : Java DSL
import org.apache.camel.Endpoint;
import org.apache.camel.Predicate;
import org.apache.camel.builder.RouteBuilder;
public class MyRoute extends RouteBuilder {
public void configure() throws Exception {
Endpoint newOrder = endpoint("activemq:queue:newOrder");
Predicate isWidget = xpath("/order/product = 'widget'");
Endpoint widget = endpoint("activemq:queue:widget");
Endpoint gadget = endpoint("activemq:queue:gadget");
from(newOrder)
.choice()
.when(isWidget).to(widget)
.otherwise().to(gadget)
.end();
}
}
24
Example : XML DSL
<route>
<from uri="activemq:queue:newOrder"/>
<choice>
<when>
<xpath>/order/product = 'widget'</xpath>
<to uri="activemq:queue:widget"/>
</when>
<otherwise>
<to uri="wmq:queue:gadget"/>
</otherwise>
</choice>
</route>
25
Example : change the endpoint
<route>
<from uri="file:inbox/orders?delete=true"/>
<choice>
<when>
<xpath>/order/product = 'widget'</xpath>
<to uri="activemq:queue:widget"/>
</when>
<otherwise>
<to uri="wmq:queue:gadget"/>
</otherwise>
</choice>
</route>
parameters
use file instead
26
DSL : Java or XML ?
● Java
+ More options for custom development, embedded solutions
in legacy applications/frameworks
– Developer needs to take control of instantiation and route
lifecycles
● XML
+ Configuration over coding, which is simple, and means you
can see your route and its resources / configuration, all in
one place
– More coarse-grained and verbose
27
Consumers and Producers
• Message consumers and producers are created from
endpoints
◾ Some endpoint technologies can create producers and
consumers, others support the creation of either a producer
or a consumer
◾ Examples :
from("timer://myTimer?period=2000")
.setBody().simple("Current time is ${header.firedTime}")
.to("stream:out");
from("ftp://john@localhost/ftp?password=nhoj")
.to("xslt:MyTransform.xslt")
.to("activemq:queue:MyQueue")
28
ESB and routes
• ESB creates a pipeline of processors
◾ Passes incoming message to processor
◾ Sends output from one processor to the next in the chain
29
ESB and messages
• ESB sends a Message Exchange along the pipeline
◾ Passes incoming message to processor
◾ Must be explicitly transformed, if needed
30
Camel Message Exchange
• Message Container during routing
• Two Properties:
• InOnly (fire & forget - e.g. JMS message)
• InOut (request-response - e.g. HTTP requests)
Exchange
InMessage
Headers
Attachments
Body
Exchange ID MEP
Exception Properties
OutMessage
Headers
Attachments
Body
31
Camel Message
• Basic structure for moving data over a Route
Sender ReceiverMessage
Message
Headers
Attachments
Body
(payload)
32
Camel Message Lifecycle
Sender ReceiverMessage
33
Camel Message Lifecycle
• In messages are modified by each processor in the
route
◾ If a processor sets the Out message, Camel automatically
copies the Out message into the In message and resets the
Out message to be null
34
End of Pipeline
• When processing is finished Camel returns the ME to
the consumer
• The consumer can :
◾ Send a response message
◾ Commit a transaction
◾ Handle and error
◾ Free any resource in use
35
Camel Components
120+ Components (supported)
36
Camel Components
120+ Components (supported)
37
Data Formats
Serialization String JSon Castor JAXB
XStream XmlBeans SOAP XmlJson CSV
EDI Flatpack
DataFormat
HL7
DataFormat
Gzip Zip
PGP Crypto XMLSecurity RSS Syslog
TidyMarkup Custom
• Transform format (e.g. CSV to XML)
• Transform data type (e.g. Java.lang.String to javax.jms.TextMessage)
• Use built-in components (e.g. XSLT), use components (e.g. Enricher),
built-in Data formats, templates, custom
38
Extending Camel
● Using Components
From : “Camel in Action”, by Claus Ibsen
39
Extending Camel : create custom components
• Use Maven to create a skeleton component
• Define endpoint name
• Implement endpoint class to create
Consumer or Producer or both
• Implement Consumer and Producer classes
JBoss Fuse Camel :
advanced topics
41
Data transformation overview
● Data Format & Data Type
◾ Data format example : message body from .csv to .xml
◾ Data type example : message body from
java.lang.String to javax.jms.TextMessage
◾ Data transformations can be combined
From : “Camel in Action”, by Claus Ibsen
42
Data Transformation
Data transformation in routes
Explicitly enforce transformation in the route using the Message
Translator or the Content Enricher EIPs. This gives you the power
to do data mapping using regular Java code.
Data transformation using
components
Camel provides a range of components for transformation, such
as the XSLT component for XML transformation.
Data transformation
using data formats
Data formats are Camel transformers that come in pairs to
transform data back and forth between well-known formats
Data transformation
using templates
Camel provides a range of components for transforming using
templates, such as Apache Velocity.
Data type transformation using
Camel’s type-converter
mechanism
Camel has an elaborate type-converter mechanism that activates
on demand. This is convenient when you need to convert from
common types such as java.lang.Integer to java.lang.String or
even from java.io.File to java.lang.String.
Message transformation in
component adapters
Extend Data transformation capability via custom transformers
43
Message Translator & Content Enricher
From : “Camel in Action”, by Claus Ibsen
44
Message Translator
● 3 methods supported
◾ Using Processor
◾ Using beans
◾ Using <transform>
Route
from("quartz://report?cron=0+0+6+*+*+?")
.to("http://riders.com/orders/cmd=received&date=yesterday")
.bean(new OrderToCsvBean())
.to("file://riders/orders?fileName=report­${header.Date}.csv");
From : “Camel in Action”, by Claus Ibsen
45
Message Translator
public class OrderToCsvBean {
public static String map(String custom) {
String id = custom.substring(0, 9);
String customerId = custom.substring(10, 19);
String date = custom.substring(20, 29);
String items = custom.substring(30);
String[] itemIds = items.split("@");
StringBuilder csv = new StringBuilder();
csv.append(id.trim());
csv.append(",").append(date.trim());
csv.append(",").append(customerId.trim());
for (String item : itemIds) {
csv.append(",").append(item.trim());
}
return csv.toString();
}
}
No Camel dependency!
Message Body mapped
automatically to
method signature
Message Body transformed
Into java.lang.String
From : “Camel in Action”, by Claus Ibsen
46
Content Enricher
from("file://repo/orders?fileName=theFile.csv")
.process(new Processor() {
    public void process(Exchange exchange) {
        Message in = exchange.getIn();
        in.setBody(in.getBody(String.class) +
"World!");
    }
}).to("mock:result");
Access Message Header
Modify Message Header
Use Mock component From : “Camel in Action”, by Claus Ibsen
47
Using Beans
● Camel does not mandate to learn a specific component
model
● Camel uses the Service
Activator EIP to invoke POJOs
inside a route, implemented
by the Bean Component
● A sample route would look like:
from("quartz://report?cron=0+0+6+*+*+?")
.to("http://riders.com/orders/cmd=received&date=yesterday")
.bean(new OrderToCsvBean())
.to("file://riders/orders?fileName=report­${header.Date}.csv");
Bean component
POJO
From : “Camel in Action”, by Claus Ibsen
48
Bean invocation
● Camel works as a Service Activator, Camel resolves the
bean to call at runtime
From : “Camel in Action”, by Claus Ibsen
49
Error handlers
● Camel support two concepts of error :
◾ Irrecoverable error (e.g. SQLException)
◾ Recoverable error
● In Camel a Recoverable error is represented by a
Java Throwable or Exception, accessible from
org.apache.camel.Exchange
● An Irrecoverable error is represented by a message
with a fault flag that can be set or accessed from
org.apache.camel.Exchange
● These definitions allow Camel to decide what to do
with an error
50
Testing
● Developers can perform full unit testing of integration
flows without having to deploy and listen on physical
transports:
◾ Configure the route to listen on in-memory endpoints
such as direct or seda and write to mock, test, or
dataset endpoints
◾ Write unit tests using JUnit or TestNG, which...
– Set expectations on each producer endpoint
– Send messages to the consumer endpoint using
ProducerTemplate
– Assert expectations
51
Components
● Camel's strength lies in the concept of Component
● All components are accessible via the URI syntax : e.g.
<scheme name> : <hierarchical part> [ ? <query> ] 
[ # <fragment> ]
● Components are listed here :
http://camel.apache.org/components.html
● Some components are defined as External, since they do
not belong to the standard Apache Camel distribution and
are available under different licenses
52
Asynchronous messaging
● JMS is a powerful integration technology
● Camel does not ship with a JMS provider, you need to
configure it with a specific ConnectionFactory instance
Message channel
Publish Subscribe channel
From : “Camel in Action”, by Claus Ibsen
53
Web Services
● Camel uses Apache CXF to access and publish Web
Services (http://cxf.apache.org)
● Camel supports both WSDL first and Code First approach
● CXF can be configured via URI
cxf://anAddress[?options]
● CXF can be configured via endpoint bean
cxf:bean:beanName
54
Databases
● Camel provides multiple ways to integrate with Databases
◾ JDBC Component
◾ SQL component
◾ JPA Component
◾ Hibernate Component (Extra component, must be downloaded
from http://code.google.com/p/camel-extra)
◾ iBatis component
55
Virtual endpoints
● In-memory messaging is a synchronous or asynchronous
messaging model which happens inside or across a
CamelContext
● 3 components
◾ Direct
– Synchronous model
◾ Seda/VM
– Asynchronous
– Same parameters
– No persistence
– No JMS
– VM can be used to send messages across CamelContexts
56
Automating tasks
● Timer and Quartz components
◾ Support only consuming components
● Timer is Camel Core component
◾ Very simple
● Quartz is based on the http://www.quartz-scheduler.org
project
◾ Allows much finer grained control
57
Aggregator
● Aggregator combines messages incoming to a single
outbound message
● Aggregator identifies messages that are related
● Messages are sent to the outbound channel when
completion conditions occur
● Aggregator requires the developer to define
◾ Correlation identifier: an Expression
◾ Completion condition: a Predicate
◾ Aggregation strategy: an AggregationStrategy
58
Splitter
● Splitter allows to read a message and split it into separate
messages so that they can be processed separately
● To use Splitter, the developer will need to configure an
Expression, which will be evaluated when a message
arrives
● Splitter will decorate the message with information that is
passed to the Exchange (e.g. Number of pieces the
original message has been split into, current message
index ....)
59
Load Balancer
● The Camel Load Balancer component is a Processor that
implements
org.apache.camel.processor.loadbalancer.LoadBalancer
interface
● Load Balancer allows to balance anything is defined in Camel routes
● Load Balancer offers multiple load balancing strategies
from("direct:start")
.loadBalance().roundRobin()
.to("seda:a").to("seda:b")
.end();
from("seda:a")
.log("A received: ${body}")
.to("mock:a");
from("seda:b")
.log("B received: ${body}")
.to("mock:b");
From : “Camel in Action”, by Claus Ibsen
60
Transactions
● Camel routes can create and enlist in transactional
contexts
● Use JMS transactions for reliable retry of message
delivery
● Use JDBC transactions to make processors
transactional
● Use the transactional error handler provided with
Camel
● Use an idempotent consumer to avoid unwanted
retries
61
Concurrency
● Camel supports the
Competing Consumers
EIP pattern
● Some EIPs support concurrency
◾ Aggregate, Multicast, Recipient
list, Splitter, Thread, Wire Tap
● Consumers can be for example
jms or seda components
◾ Concurrent consumers normally expose
the concurrentConsumers option
62
Security
● The broad categories offered are
◾ Route Security - Authentication and Authorization services to
proceed on a route or route segment
– Based on Apache Shiro : handles authentication, authorization, enterprise
session management and cryptography
◾ Payload Security - Data Formats that offer encryption/decryption
services at the payload level
– Based on XMLDataFormat and Crypto component
◾ Endpoint Security - Security offered by components that can be
utilized by endpointUri associated with the component
– Some componets offer the ability to secure their endopoints (e.g. Http, jetty,
CXF, netty, mina, JMS, ....)
◾ Configuration Security - Security offered by encrypting sensitive
information from configuration files
– Camel allows to crypt/decrypt configuration files containing sensitive
information
63
Management & Monitoring
● The Health of Camel applications can be checked at 3
levels
◾ Network
◾ JVM
◾ Application
● At JVM level Camel exposes its managed beans through
JMX
● Applications can be monitored by use of log files
● Logging is defined by EIP Log
◾ Camel supports custom logging, notification and Tracer
64
Management & Monitoring : example
From : “Camel in Action”, by Claus Ibsen

More Related Content

What's hot

Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
Christian Posta
 
Camel Based Development Application
Camel Based Development ApplicationCamel Based Development Application
Camel Based Development Application
Return on Intelligence
 
CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
Kenneth Peeples
 
Implementing WebServices with Camel and CXF in ServiceMix
Implementing WebServices with Camel and CXF in ServiceMixImplementing WebServices with Camel and CXF in ServiceMix
Implementing WebServices with Camel and CXF in ServiceMixAdrian Trenaman
 
OSGi & Blueprint
OSGi & BlueprintOSGi & Blueprint
OSGi & Blueprint
Kara Satish Kumar
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and PerformanceWSO2
 
ActiveMQ 5.9.x new features
ActiveMQ 5.9.x new featuresActiveMQ 5.9.x new features
ActiveMQ 5.9.x new features
Christian Posta
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
Virtual JBoss User Group
 
Fabric8 mq
Fabric8 mqFabric8 mq
Fabric8 mq
Rob Davies
 
Setting up a free open source java e-commerce website
Setting up a free open source java e-commerce websiteSetting up a free open source java e-commerce website
Setting up a free open source java e-commerce website
Csaba Toth
 
Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012
Bruno Borges
 
How to build a custom stack with WSO2 carbon
How to build a custom stack with WSO2 carbon How to build a custom stack with WSO2 carbon
How to build a custom stack with WSO2 carbon WSO2
 
Maximize Messaging and Performance and Lowering Infrastructure Footprint
Maximize Messaging and Performance and Lowering Infrastructure FootprintMaximize Messaging and Performance and Lowering Infrastructure Footprint
Maximize Messaging and Performance and Lowering Infrastructure FootprintWSO2
 
Jug Poitou Charentes - Apache, OSGi and Karaf
Jug Poitou Charentes -  Apache, OSGi and KarafJug Poitou Charentes -  Apache, OSGi and Karaf
Jug Poitou Charentes - Apache, OSGi and Karaf
Guillaume Nodet
 
Right-size Deployment Instances to Meet Enterprise Demand
Right-size Deployment Instances to Meet Enterprise Demand Right-size Deployment Instances to Meet Enterprise Demand
Right-size Deployment Instances to Meet Enterprise Demand WSO2
 
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
Guido Schmutz
 
Scalability Availabilty and Management of WSO2 Carbon
Scalability Availabilty and Management of WSO2 CarbonScalability Availabilty and Management of WSO2 Carbon
Scalability Availabilty and Management of WSO2 CarbonWSO2
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
J V
 
Reference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to KubernetesReference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to Kubernetes
Rakesh Gujjarlapudi
 
How the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsHow the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsWSO2
 

What's hot (20)

Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Camel Based Development Application
Camel Based Development ApplicationCamel Based Development Application
Camel Based Development Application
 
CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
 
Implementing WebServices with Camel and CXF in ServiceMix
Implementing WebServices with Camel and CXF in ServiceMixImplementing WebServices with Camel and CXF in ServiceMix
Implementing WebServices with Camel and CXF in ServiceMix
 
OSGi & Blueprint
OSGi & BlueprintOSGi & Blueprint
OSGi & Blueprint
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
 
ActiveMQ 5.9.x new features
ActiveMQ 5.9.x new featuresActiveMQ 5.9.x new features
ActiveMQ 5.9.x new features
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
 
Fabric8 mq
Fabric8 mqFabric8 mq
Fabric8 mq
 
Setting up a free open source java e-commerce website
Setting up a free open source java e-commerce websiteSetting up a free open source java e-commerce website
Setting up a free open source java e-commerce website
 
Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012
 
How to build a custom stack with WSO2 carbon
How to build a custom stack with WSO2 carbon How to build a custom stack with WSO2 carbon
How to build a custom stack with WSO2 carbon
 
Maximize Messaging and Performance and Lowering Infrastructure Footprint
Maximize Messaging and Performance and Lowering Infrastructure FootprintMaximize Messaging and Performance and Lowering Infrastructure Footprint
Maximize Messaging and Performance and Lowering Infrastructure Footprint
 
Jug Poitou Charentes - Apache, OSGi and Karaf
Jug Poitou Charentes -  Apache, OSGi and KarafJug Poitou Charentes -  Apache, OSGi and Karaf
Jug Poitou Charentes - Apache, OSGi and Karaf
 
Right-size Deployment Instances to Meet Enterprise Demand
Right-size Deployment Instances to Meet Enterprise Demand Right-size Deployment Instances to Meet Enterprise Demand
Right-size Deployment Instances to Meet Enterprise Demand
 
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
 
Scalability Availabilty and Management of WSO2 Carbon
Scalability Availabilty and Management of WSO2 CarbonScalability Availabilty and Management of WSO2 Carbon
Scalability Availabilty and Management of WSO2 Carbon
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
Reference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to KubernetesReference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to Kubernetes
 
How the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsHow the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendors
 

Viewers also liked

Redhat Open Day - Integracion JBoss Fuse A-MQ
Redhat Open Day - Integracion JBoss Fuse A-MQRedhat Open Day - Integracion JBoss Fuse A-MQ
Redhat Open Day - Integracion JBoss Fuse A-MQ
Adrian Gigante
 
JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5
Christina Lin
 
JBoss Fuse Workshop 101 part 6
JBoss Fuse Workshop 101 part 6JBoss Fuse Workshop 101 part 6
JBoss Fuse Workshop 101 part 6
Christina Lin
 
JBoss Fuse Workshop 101 part 4
JBoss Fuse Workshop 101 part 4JBoss Fuse Workshop 101 part 4
JBoss Fuse Workshop 101 part 4
Christina Lin
 
JBoss Fuse Workshop 101 part 3
JBoss Fuse Workshop 101 part 3JBoss Fuse Workshop 101 part 3
JBoss Fuse Workshop 101 part 3
Christina Lin
 
JBoss Fuse - Fuse workshop Error Handling
JBoss Fuse - Fuse workshop Error HandlingJBoss Fuse - Fuse workshop Error Handling
JBoss Fuse - Fuse workshop Error Handling
Christina Lin
 
JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2
Christina Lin
 
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
Christian Posta
 
Costos y honorarios del consultor
Costos y honorarios del consultorCostos y honorarios del consultor
Costos y honorarios del consultor
argeanatali
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
Terry Cho
 
Proceso de la consultoria
Proceso de la consultoriaProceso de la consultoria
Proceso de la consultoriaCris Muñoz
 

Viewers also liked (11)

Redhat Open Day - Integracion JBoss Fuse A-MQ
Redhat Open Day - Integracion JBoss Fuse A-MQRedhat Open Day - Integracion JBoss Fuse A-MQ
Redhat Open Day - Integracion JBoss Fuse A-MQ
 
JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5JBoss Fuse Workshop 101 part 5
JBoss Fuse Workshop 101 part 5
 
JBoss Fuse Workshop 101 part 6
JBoss Fuse Workshop 101 part 6JBoss Fuse Workshop 101 part 6
JBoss Fuse Workshop 101 part 6
 
JBoss Fuse Workshop 101 part 4
JBoss Fuse Workshop 101 part 4JBoss Fuse Workshop 101 part 4
JBoss Fuse Workshop 101 part 4
 
JBoss Fuse Workshop 101 part 3
JBoss Fuse Workshop 101 part 3JBoss Fuse Workshop 101 part 3
JBoss Fuse Workshop 101 part 3
 
JBoss Fuse - Fuse workshop Error Handling
JBoss Fuse - Fuse workshop Error HandlingJBoss Fuse - Fuse workshop Error Handling
JBoss Fuse - Fuse workshop Error Handling
 
JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2JBoss Fuse Workshop 101 part 2
JBoss Fuse Workshop 101 part 2
 
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
 
Costos y honorarios del consultor
Costos y honorarios del consultorCostos y honorarios del consultor
Costos y honorarios del consultor
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
Proceso de la consultoria
Proceso de la consultoriaProceso de la consultoria
Proceso de la consultoria
 

Similar to Red Hat Open Day JBoss Fuse

An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache Camel
Kapil Kumar
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
mdfkhan625
 
Mule enterprise service bus
Mule enterprise service busMule enterprise service bus
Mule enterprise service bus
Thang Loi
 
Mule overview
Mule overviewMule overview
Mule overview
Praneethchampion
 
Mule overview
Mule overviewMule overview
Mule overview
Mohammed625
 
Mule Overview
Mule OverviewMule Overview
Mule Overview
AbdulImrankhan7
 
ESB introduction using Mule
ESB introduction using MuleESB introduction using Mule
ESB introduction using Mule
Khasim Cise
 
Mule overview
Mule overviewMule overview
Mule overview
Rajkattamuri
 
Ruby Microservices with RabbitMQ
Ruby Microservices with RabbitMQRuby Microservices with RabbitMQ
Ruby Microservices with RabbitMQ
Zoran Majstorovic
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
aegloff
 
Spring integration
Spring integrationSpring integration
Spring integration
Dominik Strzyżewski
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
Martin Toshev
 
Mulesoftppt
Mulesoftppt Mulesoftppt
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
AbdulImrankhan7
 
Mule esb and_relevant_components
Mule esb and_relevant_componentsMule esb and_relevant_components
Mule esb and_relevant_components
Paaras Baru
 
Apache Camel interview Questions and Answers
Apache Camel interview Questions and AnswersApache Camel interview Questions and Answers
Apache Camel interview Questions and Answers
jeetendra mandal
 
Spring integration
Spring integrationSpring integration
Spring integration
Oliver Gierke
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-finalChristian Posta
 
Operationalizing Machine Learning: Serving ML Models
Operationalizing Machine Learning: Serving ML ModelsOperationalizing Machine Learning: Serving ML Models
Operationalizing Machine Learning: Serving ML Models
Lightbend
 

Similar to Red Hat Open Day JBoss Fuse (20)

EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache Camel
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
Mule enterprise service bus
Mule enterprise service busMule enterprise service bus
Mule enterprise service bus
 
Mule overview
Mule overviewMule overview
Mule overview
 
Mule overview
Mule overviewMule overview
Mule overview
 
Mule Overview
Mule OverviewMule Overview
Mule Overview
 
ESB introduction using Mule
ESB introduction using MuleESB introduction using Mule
ESB introduction using Mule
 
Mule overview
Mule overviewMule overview
Mule overview
 
Ruby Microservices with RabbitMQ
Ruby Microservices with RabbitMQRuby Microservices with RabbitMQ
Ruby Microservices with RabbitMQ
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
 
Spring integration
Spring integrationSpring integration
Spring integration
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
 
Mulesoftppt
Mulesoftppt Mulesoftppt
Mulesoftppt
 
Overview of Mule
Overview of MuleOverview of Mule
Overview of Mule
 
Mule esb and_relevant_components
Mule esb and_relevant_componentsMule esb and_relevant_components
Mule esb and_relevant_components
 
Apache Camel interview Questions and Answers
Apache Camel interview Questions and AnswersApache Camel interview Questions and Answers
Apache Camel interview Questions and Answers
 
Spring integration
Spring integrationSpring integration
Spring integration
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
 
Operationalizing Machine Learning: Serving ML Models
Operationalizing Machine Learning: Serving ML ModelsOperationalizing Machine Learning: Serving ML Models
Operationalizing Machine Learning: Serving ML Models
 

Recently uploaded

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
UiPathCommunity
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 

Recently uploaded (20)

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 

Red Hat Open Day JBoss Fuse

  • 3. 3 Keywords ● Apache Camel ● Enterprise Integration Patterns ● Components, Routes, Endpoints, Messages, Processors
  • 4. 4 Apache Camel • Powerful Integration Framework – Based on known Enterprise Integration Patterns – Framework do the heavy lifting – You can focus on business problem – Not "reinventing the wheel" • Use Case : a really simple way to do integration – Started as a Sub-project of ActiveMQ in March 2007 – 36 committers (15 work for Red Hat) – 80-100k artifact downloads a month – 120k website views a month – 1000 user mailing list posts per month – 130 + Components and growing – Most widely used integration framework on the planet
  • 6. 6 Camel implements most EIP Patterns http://camel.apache.org/enterprise-integration-patterns.html • Messaging systems • Messaging Channels • Message Routing • Message transformation • Message Endpoints Message router Message translator Dead Letter Channel Message Bus Recipient List Splitter Aggregator Content Enricher Content Filter Event Driven Consumer Polling Consumer
  • 7. 7 Example : complex deployment Source : JBoss Fuse success story – Major Retail Pharmacy Chain
  • 8. 8 JBoss Fuse Architecture : routes, components, endpoints From : “Camel in Action”, by Claus Ibsen
  • 9. 9 Camel Context • CamelContext is the container of many Camel Services • Instance of the Camel runtime From : “Camel in Action”, by Claus Ibsen
  • 10. 10 What is a Camel Component? • Components are the main extension point in Camel • Components are used to manage everything in Camel : ◾ Data Transport ◾ Data Formatting ◾ ... customized behaviour • From a programming point of view they : ◾ Have a name ◾ Act as a Factory of endpoints
  • 11. 11 What is a Camel Processor? • Core Camel concept : node capable of using, creating, or modifying an incoming exchange • During routing exchanges flow from one processor to another public interface Processor {   /**    * Processes the message exchange    *     * @param exchange the message exchange    * @throws Exception if an internal processing error has occurred.    */   void process(Exchange exchange) throws Exception; }
  • 12. 12 EIP Patterns and Processors • Implement the actions of the EIP between the endpoints • Perform actions on the message in the Route (e.g modify, use, create, enrich ...) • Processors can be linked in a pipeline flow • Processor examples : Splitter Message Filter Aggregator Message Router Content Enricher
  • 13. 13 What is a Camel route? • A Route is the step-by-step movement of a message: ◾ From a “listening” endpoint in the role of consumer ◾ Through a processing component - enterprise integration pattern, processor, interceptor, etc. (optional) ◾ To a target endpoint in the role of producer • May involve any number of processing components that modify the original message and/or redirect it ◾ Use expressions and predicates • An application developer specifies routes using: ◾ Spring configuration files ◾ Java Domain Specific Language (DSL)
  • 14. 14 Routes .... • By decoupling clients from servers, and producers from consumers, routes can ◾ Decide dynamically what server a client will invoke ◾ Provide a flexible way to add extra processing ◾ Allow for clients and servers to be developed independently ◾ Allow for clients of servers to be stubbed out (using mocks) for testing purposes ◾ Foster better design practices by connecting disparate systems that do one thing well ◾ Enhance features and functionality of some systems (such as message brokers and ESBs) • Each route in Camel has a unique identifier that’s used for logging, debugging, monitoring, and starting and stopping routes.
  • 15. 15 Expressions and Predicates • Expressions return a selection of nodes for processing ◾ XPath is used for parsing XML payloads • Predicates are conditional expressions ◾ Used to add logical branching to routes • Camel supports other expression languages ◾ XQuery, Simple, Bean, OGNL, JavaScript, Groovy, Ruby ...
  • 16. 16 What is a Camel Endpoint? • An endpoint is something that can create or receive messages, for example, an FTP server, a Web Service, or a JMS broker • Camel allows you to specifiy endpoints using simple URIs ◾ ftp://john@localhost/ftp?password=nhoj ◾ activemq:queue:MyQueue ◾ timer://myTimer?period=2000 • Consumer Endpoint, source at beginning of Route, 'from' • Producer Endpoint, sink at end of Route, 'to'
  • 17. 17 Endpoint Syntax • Endpoint URI format: scheme:remainingURI[?options] • Where: • scheme identifies the component – Scheme is the registered service name for activating a component in Camel – Triggers dynamic loading of the component – Maps to a specific instance of org.apache.camel.Component • options is a list of name/value pairs option1=value1&option2=value2&option3=value3 from("ftp://john@localhost/ftp?password=nhoj") .to("xslt:MyTransform.xslt") .to("activemq:queue:MyQueue") Consumer endpoint Producer endpoint Parameters
  • 18. 18 Endpoint Functionality • Endpoints are either message source or message sink • Two roles : ◾ Consumer – Appears at the beginning of a routing rule (for example, in a from() command or in a <from ...> element, depending on the DSL used) – Receives messages from an external source and creates a message exchange object, which the routing rule processes. ◾ Producer – Appears at the end of a routing rule (for example, in a to() command or in a <to ...> element, depending on the DSL used) – Sends the current message wrapped in the message exchange object to an external target destination.
  • 19. 19 Camel Components in practice Use Case : Receive orders from ActiveMQ queue and based on the type of message forward to appropriate queue (ActiveMQ or Websphere MQ)
  • 20. 20 Example 1 of 3 from newOrder choice when isWidget to widget otherwise to gadget
  • 21. 21 Example 2 of 3 from(newOrder) .choice() .when(isWidget).to(widget) .otherwise.to(gadget)
  • 22. 22 Example 3 of 3 Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("wmq:queue:gadget"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise.to(gadget)
  • 23. 23 Example : Java DSL import org.apache.camel.Endpoint; import org.apache.camel.Predicate; import org.apache.camel.builder.RouteBuilder; public class MyRoute extends RouteBuilder { public void configure() throws Exception { Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("activemq:queue:gadget"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget) .end(); } }
  • 24. 24 Example : XML DSL <route> <from uri="activemq:queue:newOrder"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/> </when> <otherwise> <to uri="wmq:queue:gadget"/> </otherwise> </choice> </route>
  • 25. 25 Example : change the endpoint <route> <from uri="file:inbox/orders?delete=true"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/> </when> <otherwise> <to uri="wmq:queue:gadget"/> </otherwise> </choice> </route> parameters use file instead
  • 26. 26 DSL : Java or XML ? ● Java + More options for custom development, embedded solutions in legacy applications/frameworks – Developer needs to take control of instantiation and route lifecycles ● XML + Configuration over coding, which is simple, and means you can see your route and its resources / configuration, all in one place – More coarse-grained and verbose
  • 27. 27 Consumers and Producers • Message consumers and producers are created from endpoints ◾ Some endpoint technologies can create producers and consumers, others support the creation of either a producer or a consumer ◾ Examples : from("timer://myTimer?period=2000") .setBody().simple("Current time is ${header.firedTime}") .to("stream:out"); from("ftp://john@localhost/ftp?password=nhoj") .to("xslt:MyTransform.xslt") .to("activemq:queue:MyQueue")
  • 28. 28 ESB and routes • ESB creates a pipeline of processors ◾ Passes incoming message to processor ◾ Sends output from one processor to the next in the chain
  • 29. 29 ESB and messages • ESB sends a Message Exchange along the pipeline ◾ Passes incoming message to processor ◾ Must be explicitly transformed, if needed
  • 30. 30 Camel Message Exchange • Message Container during routing • Two Properties: • InOnly (fire & forget - e.g. JMS message) • InOut (request-response - e.g. HTTP requests) Exchange InMessage Headers Attachments Body Exchange ID MEP Exception Properties OutMessage Headers Attachments Body
  • 31. 31 Camel Message • Basic structure for moving data over a Route Sender ReceiverMessage Message Headers Attachments Body (payload)
  • 33. 33 Camel Message Lifecycle • In messages are modified by each processor in the route ◾ If a processor sets the Out message, Camel automatically copies the Out message into the In message and resets the Out message to be null
  • 34. 34 End of Pipeline • When processing is finished Camel returns the ME to the consumer • The consumer can : ◾ Send a response message ◾ Commit a transaction ◾ Handle and error ◾ Free any resource in use
  • 37. 37 Data Formats Serialization String JSon Castor JAXB XStream XmlBeans SOAP XmlJson CSV EDI Flatpack DataFormat HL7 DataFormat Gzip Zip PGP Crypto XMLSecurity RSS Syslog TidyMarkup Custom • Transform format (e.g. CSV to XML) • Transform data type (e.g. Java.lang.String to javax.jms.TextMessage) • Use built-in components (e.g. XSLT), use components (e.g. Enricher), built-in Data formats, templates, custom
  • 38. 38 Extending Camel ● Using Components From : “Camel in Action”, by Claus Ibsen
  • 39. 39 Extending Camel : create custom components • Use Maven to create a skeleton component • Define endpoint name • Implement endpoint class to create Consumer or Producer or both • Implement Consumer and Producer classes
  • 40. JBoss Fuse Camel : advanced topics
  • 41. 41 Data transformation overview ● Data Format & Data Type ◾ Data format example : message body from .csv to .xml ◾ Data type example : message body from java.lang.String to javax.jms.TextMessage ◾ Data transformations can be combined From : “Camel in Action”, by Claus Ibsen
  • 42. 42 Data Transformation Data transformation in routes Explicitly enforce transformation in the route using the Message Translator or the Content Enricher EIPs. This gives you the power to do data mapping using regular Java code. Data transformation using components Camel provides a range of components for transformation, such as the XSLT component for XML transformation. Data transformation using data formats Data formats are Camel transformers that come in pairs to transform data back and forth between well-known formats Data transformation using templates Camel provides a range of components for transforming using templates, such as Apache Velocity. Data type transformation using Camel’s type-converter mechanism Camel has an elaborate type-converter mechanism that activates on demand. This is convenient when you need to convert from common types such as java.lang.Integer to java.lang.String or even from java.io.File to java.lang.String. Message transformation in component adapters Extend Data transformation capability via custom transformers
  • 43. 43 Message Translator & Content Enricher From : “Camel in Action”, by Claus Ibsen
  • 44. 44 Message Translator ● 3 methods supported ◾ Using Processor ◾ Using beans ◾ Using <transform> Route from("quartz://report?cron=0+0+6+*+*+?") .to("http://riders.com/orders/cmd=received&date=yesterday") .bean(new OrderToCsvBean()) .to("file://riders/orders?fileName=report­${header.Date}.csv"); From : “Camel in Action”, by Claus Ibsen
  • 47. 47 Using Beans ● Camel does not mandate to learn a specific component model ● Camel uses the Service Activator EIP to invoke POJOs inside a route, implemented by the Bean Component ● A sample route would look like: from("quartz://report?cron=0+0+6+*+*+?") .to("http://riders.com/orders/cmd=received&date=yesterday") .bean(new OrderToCsvBean()) .to("file://riders/orders?fileName=report­${header.Date}.csv"); Bean component POJO From : “Camel in Action”, by Claus Ibsen
  • 48. 48 Bean invocation ● Camel works as a Service Activator, Camel resolves the bean to call at runtime From : “Camel in Action”, by Claus Ibsen
  • 49. 49 Error handlers ● Camel support two concepts of error : ◾ Irrecoverable error (e.g. SQLException) ◾ Recoverable error ● In Camel a Recoverable error is represented by a Java Throwable or Exception, accessible from org.apache.camel.Exchange ● An Irrecoverable error is represented by a message with a fault flag that can be set or accessed from org.apache.camel.Exchange ● These definitions allow Camel to decide what to do with an error
  • 50. 50 Testing ● Developers can perform full unit testing of integration flows without having to deploy and listen on physical transports: ◾ Configure the route to listen on in-memory endpoints such as direct or seda and write to mock, test, or dataset endpoints ◾ Write unit tests using JUnit or TestNG, which... – Set expectations on each producer endpoint – Send messages to the consumer endpoint using ProducerTemplate – Assert expectations
  • 51. 51 Components ● Camel's strength lies in the concept of Component ● All components are accessible via the URI syntax : e.g. <scheme name> : <hierarchical part> [ ? <query> ]  [ # <fragment> ] ● Components are listed here : http://camel.apache.org/components.html ● Some components are defined as External, since they do not belong to the standard Apache Camel distribution and are available under different licenses
  • 52. 52 Asynchronous messaging ● JMS is a powerful integration technology ● Camel does not ship with a JMS provider, you need to configure it with a specific ConnectionFactory instance Message channel Publish Subscribe channel From : “Camel in Action”, by Claus Ibsen
  • 53. 53 Web Services ● Camel uses Apache CXF to access and publish Web Services (http://cxf.apache.org) ● Camel supports both WSDL first and Code First approach ● CXF can be configured via URI cxf://anAddress[?options] ● CXF can be configured via endpoint bean cxf:bean:beanName
  • 54. 54 Databases ● Camel provides multiple ways to integrate with Databases ◾ JDBC Component ◾ SQL component ◾ JPA Component ◾ Hibernate Component (Extra component, must be downloaded from http://code.google.com/p/camel-extra) ◾ iBatis component
  • 55. 55 Virtual endpoints ● In-memory messaging is a synchronous or asynchronous messaging model which happens inside or across a CamelContext ● 3 components ◾ Direct – Synchronous model ◾ Seda/VM – Asynchronous – Same parameters – No persistence – No JMS – VM can be used to send messages across CamelContexts
  • 56. 56 Automating tasks ● Timer and Quartz components ◾ Support only consuming components ● Timer is Camel Core component ◾ Very simple ● Quartz is based on the http://www.quartz-scheduler.org project ◾ Allows much finer grained control
  • 57. 57 Aggregator ● Aggregator combines messages incoming to a single outbound message ● Aggregator identifies messages that are related ● Messages are sent to the outbound channel when completion conditions occur ● Aggregator requires the developer to define ◾ Correlation identifier: an Expression ◾ Completion condition: a Predicate ◾ Aggregation strategy: an AggregationStrategy
  • 58. 58 Splitter ● Splitter allows to read a message and split it into separate messages so that they can be processed separately ● To use Splitter, the developer will need to configure an Expression, which will be evaluated when a message arrives ● Splitter will decorate the message with information that is passed to the Exchange (e.g. Number of pieces the original message has been split into, current message index ....)
  • 59. 59 Load Balancer ● The Camel Load Balancer component is a Processor that implements org.apache.camel.processor.loadbalancer.LoadBalancer interface ● Load Balancer allows to balance anything is defined in Camel routes ● Load Balancer offers multiple load balancing strategies from("direct:start") .loadBalance().roundRobin() .to("seda:a").to("seda:b") .end(); from("seda:a") .log("A received: ${body}") .to("mock:a"); from("seda:b") .log("B received: ${body}") .to("mock:b"); From : “Camel in Action”, by Claus Ibsen
  • 60. 60 Transactions ● Camel routes can create and enlist in transactional contexts ● Use JMS transactions for reliable retry of message delivery ● Use JDBC transactions to make processors transactional ● Use the transactional error handler provided with Camel ● Use an idempotent consumer to avoid unwanted retries
  • 61. 61 Concurrency ● Camel supports the Competing Consumers EIP pattern ● Some EIPs support concurrency ◾ Aggregate, Multicast, Recipient list, Splitter, Thread, Wire Tap ● Consumers can be for example jms or seda components ◾ Concurrent consumers normally expose the concurrentConsumers option
  • 62. 62 Security ● The broad categories offered are ◾ Route Security - Authentication and Authorization services to proceed on a route or route segment – Based on Apache Shiro : handles authentication, authorization, enterprise session management and cryptography ◾ Payload Security - Data Formats that offer encryption/decryption services at the payload level – Based on XMLDataFormat and Crypto component ◾ Endpoint Security - Security offered by components that can be utilized by endpointUri associated with the component – Some componets offer the ability to secure their endopoints (e.g. Http, jetty, CXF, netty, mina, JMS, ....) ◾ Configuration Security - Security offered by encrypting sensitive information from configuration files – Camel allows to crypt/decrypt configuration files containing sensitive information
  • 63. 63 Management & Monitoring ● The Health of Camel applications can be checked at 3 levels ◾ Network ◾ JVM ◾ Application ● At JVM level Camel exposes its managed beans through JMX ● Applications can be monitored by use of log files ● Logging is defined by EIP Log ◾ Camel supports custom logging, notification and Tracer
  • 64. 64 Management & Monitoring : example From : “Camel in Action”, by Claus Ibsen

Editor's Notes

  1. &amp;lt;number&amp;gt;
  2. &amp;lt;number&amp;gt;
  3. &amp;lt;number&amp;gt;
  4. &amp;lt;number&amp;gt;
  5. &amp;lt;number&amp;gt;
  6. &amp;lt;number&amp;gt;
  7. &amp;lt;number&amp;gt;
  8. Encapsulates the entire communication: • Placeholders for two messages: IN and OUT • Message exchange pattern (MEP) is set to InOnly or InOut • Properties describe the communication – Apply to both messages • IN messages get modified repeatedly as they travel the route • OUT messages are set only when the exchange is type InOut • Booleans – isFailed indicates whether an error has occurred – isTransacted and isRollbackOnly plus a UnitOfWork object are used to describe the current transaction (if any)
  9. Encapsulates the entire communication: • Placeholders for two messages: IN and OUT • Message exchange pattern (MEP) is set to InOnly or InOut • Properties describe the communication – Apply to both messages • IN messages get modified repeatedly as they travel the route • OUT messages are set only when the exchange is type InOut • Booleans – isFailed indicates whether an error has occurred – isTransacted and isRollbackOnly plus a UnitOfWork object are used to describe the current transaction (if any)
  10. Encapsulates the entire communication: • Placeholders for two messages: IN and OUT • Message exchange pattern (MEP) is set to InOnly or InOut • Properties describe the communication – Apply to both messages • IN messages get modified repeatedly as they travel the route • OUT messages are set only when the exchange is type InOut • Booleans – isFailed indicates whether an error has occurred – isTransacted and isRollbackOnly plus a UnitOfWork object are used to describe the current transaction (if any)
  11. Encapsulates the entire communication: • Placeholders for two messages: IN and OUT • Message exchange pattern (MEP) is set to InOnly or InOut • Properties describe the communication – Apply to both messages • IN messages get modified repeatedly as they travel the route • OUT messages are set only when the exchange is type InOut • Booleans – isFailed indicates whether an error has occurred – isTransacted and isRollbackOnly plus a UnitOfWork object are used to describe the current transaction (if any)