This document provides an overview of Apache Camel, an open source framework for integration. It discusses key Camel concepts like routes, endpoints, components, messages and integration patterns. It provides examples of routing messages between different endpoints using the Java and XML domain specific languages.
Scalable Messaging is the the need of the enterprise messaging infrastructure. JBossA-MQ is one of the leading products for scalable messaging. It also covers some common concepts beween Apache Active MQ and JBoss A-MQ . Apache Camel as a integration framework supports the enterprise messaging greately and the presentation also contains some of its areas of adjunction to Scalable messaging with queues and topics.
JBoss Fuse - Fuse workshop EAP containerChristina Lin
JBoss Fuse allow you to have flexibility to deploy your Camel application on two most popular java container standards, OSGi and JavaEE, this workshop walks you through how to develop your application on JBoss EAP
Instructional webinar on how to create an consume web services with Apache ServiceMix using Apache CXF. We cover code generation, JAX-WS implementation, Spring configuration and both WAR and OSGi bundle-based deployment models.
Want to get your hands dirty and play around with the Middleware that is going to amaze you with the rich components provided within and made integration much easier pattern base framework. Stop reading and start playing!
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
This presentation will demonstrate how to rapidly prototype and develop distributed, scalable applications with Apache Camel, its AWS Components and the AWS Java SDK.
Robin Howlett is Senior Architect at Silver Chalice, a Chicago White Sox affiliated start-up, based in Boulder, CO, with a portfolio of high-value digital-based businesses in the fields of sports, media and entertainment. In 2011, he built the Advanced Media Platform, a proprietary cloud-based platform that services millions of requests per day across dozens of mobile application products, heavily utilizing the Apache Camel framework.
Scalable Messaging is the the need of the enterprise messaging infrastructure. JBossA-MQ is one of the leading products for scalable messaging. It also covers some common concepts beween Apache Active MQ and JBoss A-MQ . Apache Camel as a integration framework supports the enterprise messaging greately and the presentation also contains some of its areas of adjunction to Scalable messaging with queues and topics.
JBoss Fuse - Fuse workshop EAP containerChristina Lin
JBoss Fuse allow you to have flexibility to deploy your Camel application on two most popular java container standards, OSGi and JavaEE, this workshop walks you through how to develop your application on JBoss EAP
Instructional webinar on how to create an consume web services with Apache ServiceMix using Apache CXF. We cover code generation, JAX-WS implementation, Spring configuration and both WAR and OSGi bundle-based deployment models.
Want to get your hands dirty and play around with the Middleware that is going to amaze you with the rich components provided within and made integration much easier pattern base framework. Stop reading and start playing!
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
This presentation will demonstrate how to rapidly prototype and develop distributed, scalable applications with Apache Camel, its AWS Components and the AWS Java SDK.
Robin Howlett is Senior Architect at Silver Chalice, a Chicago White Sox affiliated start-up, based in Boulder, CO, with a portfolio of high-value digital-based businesses in the fields of sports, media and entertainment. In 2011, he built the Advanced Media Platform, a proprietary cloud-based platform that services millions of requests per day across dozens of mobile application products, heavily utilizing the Apache Camel framework.
Middleware Security for Apache CXF, Camel, ActiveMQ and Karaf as well as others continue to be an ongoing concern especially around Authentication, Authorization, Data at Rest and Data in Transit. The session will include a presentation and demonstrations of implementing Authentication (AuthN) and Authorization (AuthZ) as well as other security topics.
This session covers new improvements that will be introduced in WildFly 9:
• Wildfly-core will be extracted from the codebase and the ability to assemble a server on top of it will be introduced. WildFly 9 will be provided in two versions: Wildfly Web and Wildfly Full but users will be able to create their custom packaging of WildFly.
• Users will be able to shutdown the application server in a graceful manner - after the shutdown command is executed server will reject new requests and allow existing requests to finish before it shuts down.
• Support for HTTP/2, a new version of HTTP protocol based on SPDY, will be introduced.
• Users will be able to use WildFly as a load balancer. Consequently, it will be possible to manage the balancer with the same tools that are used to manage the rest of the domain. What is more, users will be able to use more efficient protocols, such as HTTP/2, for communication between the balancer and backend servers.
• An OpenShift cartridge, which will enable users to use WildFly 9 in cloud environment, will be provided.
• WildFly 9 will use OpenJDK ORB library instead of JacORB.
Setting up a free open source java e-commerce websiteCsaba Toth
History and lessons learned from a startup weekend. How I picked a FOSS e-commerce Java software and set-up a webshop in a weekend from ground zero. Including pushing it into the cloud.
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)Guido Schmutz
With Oracle SOA Suite 11g the old Oracle ESB become the Mediator component. With that only one "real" service bus resides, the Oracle Serivce Bus (OSB), which has been taken over from BEA (used to be Aqualogic Service Bus).
Mediator and OSB have some overlapping funcitonality, like transformation, routing and filtering. The question automatically raised is of course when to use which component. This presentation shows the difference between the components, the functionality they provide and some typical use cases for both.
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
Alfresco Summit 2014 (London)
Though best practice is to leverage Alfresco through the well defined API's, it can be useful to understand the internals of the repository so that your development efforts are the most effective. A deep understanding of the repository will help you to evaluate performance bottlenecks, look for bugs, or make contributions. This session provides an overview of the repository internals, including the major components, the key services, subsystems, and database. We then provide an example where we leverage the repository in a micro-service architecture while building Alfresco's future cloud products and show how the different parts of the repository interact to fulfill requests.
http://summit.alfresco.com/london/sessions/diving-deep-alfresco-repository
https://www.youtube.com/watch?v=TAE9UjC0xxc
Redhat Open Day - Integracion JBoss Fuse A-MQAdrian Gigante
Conozca como nuestro bus de servicios empresariales Red Hat JBoss Fuse proporciona una mejor gestión de la información maximizando el valor de sus aplicaciones, reduciendo los tiempos de respuesta operativos, agilizando la toma de decisiones inteligentes para su negocio en tiempo real.
It's time to take a look at the running container for the camel route we have been creating for this stock trading company, after all, our system cannot always run on developer's laptop.
This part takes you look at the OSGi container in JBoss Fuse
Middleware Security for Apache CXF, Camel, ActiveMQ and Karaf as well as others continue to be an ongoing concern especially around Authentication, Authorization, Data at Rest and Data in Transit. The session will include a presentation and demonstrations of implementing Authentication (AuthN) and Authorization (AuthZ) as well as other security topics.
This session covers new improvements that will be introduced in WildFly 9:
• Wildfly-core will be extracted from the codebase and the ability to assemble a server on top of it will be introduced. WildFly 9 will be provided in two versions: Wildfly Web and Wildfly Full but users will be able to create their custom packaging of WildFly.
• Users will be able to shutdown the application server in a graceful manner - after the shutdown command is executed server will reject new requests and allow existing requests to finish before it shuts down.
• Support for HTTP/2, a new version of HTTP protocol based on SPDY, will be introduced.
• Users will be able to use WildFly as a load balancer. Consequently, it will be possible to manage the balancer with the same tools that are used to manage the rest of the domain. What is more, users will be able to use more efficient protocols, such as HTTP/2, for communication between the balancer and backend servers.
• An OpenShift cartridge, which will enable users to use WildFly 9 in cloud environment, will be provided.
• WildFly 9 will use OpenJDK ORB library instead of JacORB.
Setting up a free open source java e-commerce websiteCsaba Toth
History and lessons learned from a startup weekend. How I picked a FOSS e-commerce Java software and set-up a webshop in a weekend from ground zero. Including pushing it into the cloud.
Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)Guido Schmutz
With Oracle SOA Suite 11g the old Oracle ESB become the Mediator component. With that only one "real" service bus resides, the Oracle Serivce Bus (OSB), which has been taken over from BEA (used to be Aqualogic Service Bus).
Mediator and OSB have some overlapping funcitonality, like transformation, routing and filtering. The question automatically raised is of course when to use which component. This presentation shows the difference between the components, the functionality they provide and some typical use cases for both.
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
Alfresco Summit 2014 (London)
Though best practice is to leverage Alfresco through the well defined API's, it can be useful to understand the internals of the repository so that your development efforts are the most effective. A deep understanding of the repository will help you to evaluate performance bottlenecks, look for bugs, or make contributions. This session provides an overview of the repository internals, including the major components, the key services, subsystems, and database. We then provide an example where we leverage the repository in a micro-service architecture while building Alfresco's future cloud products and show how the different parts of the repository interact to fulfill requests.
http://summit.alfresco.com/london/sessions/diving-deep-alfresco-repository
https://www.youtube.com/watch?v=TAE9UjC0xxc
Redhat Open Day - Integracion JBoss Fuse A-MQAdrian Gigante
Conozca como nuestro bus de servicios empresariales Red Hat JBoss Fuse proporciona una mejor gestión de la información maximizando el valor de sus aplicaciones, reduciendo los tiempos de respuesta operativos, agilizando la toma de decisiones inteligentes para su negocio en tiempo real.
It's time to take a look at the running container for the camel route we have been creating for this stock trading company, after all, our system cannot always run on developer's laptop.
This part takes you look at the OSGi container in JBoss Fuse
This is the last part of the workshop.
This workshop is about fabric8. It provision, automate, configure, and manage containers from a central location.
Also provide HA, failover and service registry too.
The best thing about Camel is that you can actually concentrating what is important, your enterprise specific customize logic. And guess what, there are no framework to learn, just use POJO. This workshop tells you how to register your java bean in Camel, and how to make use of it!
This part go on to explain what EIP, Enterprise Integration Pattern is. We take you through some of the common EIP we use while trying to solve integration problems. But it's not just boring old textbook EIP, we go through an ordering system that actually discuss what EIP we can use in it!
JBoss Fuse - Fuse workshop Error HandlingChristina Lin
This small independent workshop talks about error handling in Camel. It covers the basic error handler, catches exceptions and also using try and catch in Camel route.
You had a go on building your first camel application, now it's time to look at how data can configured to transformed in the blink of an eye! Part 2 of the workshop is all about message transformation!
aqui se muestran los diferentes tipos de honorarios de un consultor asi como los métodos que hay para determinarlos e ingormacion de la factura hacia el cliente.
Reliable communication is essential for microservice based architectures. One of the most effective patterns for microservices communication is message queue. We'll see how a Rubyist can build scalable microservices using RabbitMQ and run it on the AWS infrastructure in Docker containers.
Operationalizing Machine Learning: Serving ML ModelsLightbend
Join O’Reilly author and Lightbend Principal Architect, Boris Lublinsky, as he discusses one of the hottest topics in software engineering today: serving machine learning models.
Typically with machine learning, different groups are responsible for model training and model serving. Data scientists often introduce their own machine-learning tools, causing software engineers to create complementary model-serving frameworks to keep pace. It’s not a very efficient system. In this webinar, Boris demonstrates a more standardized approach to model serving and model scoring:
* How to develop an architecture for serving models in real time as part of input stream processing
* How this approach enables data science teams to update models without restarting existing applications
* Different ways to build this model-scoring solution, using several popular stream processing engines and frameworks
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
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
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)
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
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
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
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
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)
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)
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)
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)