SlideShare a Scribd company logo
1 of 51
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 1
Integration and
Asynchronous
Processing with
ActiveMQ and
Camel
Justin Reock
Sr. Director and Lead Architect
Rogue Wave OSS Support
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 2
Who’s speaking to me?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 3
Justin Reock
• Sr. Director and Lead Architect of our OSS Support Team
• Way too much experience with ActiveMQ and Camel
• Developed our formal instructor-led training
• Numerous professional services and training engagements
• Early adopter of JMS and Camel
• Major FL/OSS evangelist!
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 4
What are we going to solve?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 5
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 6
Asynchronous processing
• No one likes the spinning wheel of doom hope!
• We’re going to talk about offloading work to a backend server
• We’re going to do it in a way that’s reliable, flexible, and guaranteed
• Built on industry standards and vetted against thousands of production
systems
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 7
What else?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 8
Quick exercise…
• I’m going to show you three slides
• They all have something in common….
• See if you can figure out what it is!
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 9
The Chupacabra…
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 10
A magical unicorn…
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 11
BillingFulfillment
CRME-Commerce
A homogeneous enterprise
landscape…
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 12
Answer
 None of these things exist in real life!
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 13
I’m listening…
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 14
Meet: The solutions!
• We’ll be leveraging two related technologies, Apache ActiveMQ and
Apache Camel
• Apache ActiveMQ is a JMS implementation, and can help with both
federation of systems and asynchronous processing
• Apache Camel is a sophisticated message oriented middleware
language, with hundreds of integration components
• But let’s take a step back and answer a couple questions first…
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 15
What is JMS?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 16
Messaging and JMS
• Applications often have a need to send information back and forth to one
another in a normalized fashion
• Before the advent of messaging systems, it was often difficult if not
impossible to “federate” applications written in disparate languages or
residing on heterogeneous platforms
• An early goal of Java was to present a language with the power of C which was
not hindered by cross-platform issues
• JMS, the Java Messaging Service, arose out of a growing need to federate
very different systems with each other
PHP Application AS400 Application
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 17
Messaging and JMS
• JMS 1.1 – Java Messaging Service
– Intent was to build vendor-neutral specification for sending enterprise
messages through Java
– JMS is just a specification
– Messaging consists of Messages, Queues, and Topics
– Transport endpoints are called Producers and Consumers
• JMS Provider
– These are the vendor-specific implementations of JMS
– ActiveMQ is a JMS Provider
– A JMS Provider must implement the JMS Spec
– A JMS Provider forms the framework for facilitating the use of JMS
concepts inside an application
– JMS is portable, but JMS providers may not be
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 18
What is Message Oriented
Middleware?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 19
Message oriented middleware
• Technically, MOM is any platform that sends and receives messages
between distributed applications
• This allows for asynchronous processing, and normalization of data
exchanges
• Clients connect to a messaging provider, and send and receive
messages via that provider
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 20
What’s it good for?
• Data normalization makes it a lot easier for disparate applications to
trade information
• Just like in web services, heterogeneous systems can agree on a data
“contract” and send and receive data in that format
• All the application needs is a client compatible with the messaging
provider
• And since messages are allowed to queue up on the message provider,
it also makes it very easy to perform asynchronous processing
• Most message providers offer additional benefits, like guaranteed
delivery, options for traffic shaping, high availability, and scaling
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 21
What is ActiveMQ?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 22
Apache ActiveMQ
• ActiveMQ is a Java-based multi-purpose messaging middleware solution,
called a message broker, designed for high throughput and scale
• It is useful in a number of situations, including aggregating large amounts of
data in an efficient and safe manner, federating disparate or heterogeneous
applications across an enterprise, and/or moving data between
geographically separated data centers or applications
• ActiveMQ supports a number of connection protocols, allowing it to provide
connection points between applications coded in different languages, such as
Java, C++, .NET, PHP, etc
• Customers commonly migrate to ActiveMQ from commercial middleware
such as WebSphereMQ, Oracle AQ, TIBCO EMS, and/or MSMQ
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 23
Why is it so popular?
• ActiveMQ is a mature and well-adopted platform, with thousands of
companies using it, and backed by a strong community
• It is by far the most flexible OSS message broker available, offering
integration points for dozens of application frameworks and languages
• ActiveMQ ships with Apache Camel, one of the most revolutionary
integration frameworks available, and shares developers and committers with
the Apache Camel product
• ActiveMQ can be tuned for massive scale, supporting large data sets, such
as those generated by the CERN large hadron collider
• Its configuration can support numerous traffic and implementation models
• ActiveMQ has a powerful statistics and metrics engine, exposing crucial
details about the health of the broker and the amount and size of message
traffic and client status
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 24
Where does it fit?
• ActiveMQ acts as integration middleware, sitting between various
enterprise applications, data sources, and APIs, and “federating” data
between the systems
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 25
Where does it fit?
• ActiveMQ can also be used as a reliable message buffer
• Applications can send messages into ActiveMQ and continue working,
knowing that ActiveMQ will guarantee delivery of the message
• Or, ActiveMQ can be used to broadcast messages to several different
systems
• ActiveMQ supports transactions between
the broker and the client, so that exceptions
can be caught and managed
• Using these constructs, you can easily create
asynchronous message patterns by sending
or receiving messages from ActiveMQ
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 26
Destination types
Queues
• Queues are FIFO buffers of messages
• Multiple listeners, or “consumers” can be attached to a single queue, and
can round-robin or otherwise balance processing load
• This is called “fanning out”
• Client libraries can scale up and down consumers as necessary, but only
one consumer will ever receive a single copy of a message
Topics
• These are message broadcast channels
• A single message can be broadcast to multiple, single-threaded
“subscribers”
• Subscribers can scale using “virtual topics” in ActiveMQ, or “shared
subscriptions” in JMS 2.0
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 27
Quick demo…
• Let’s integrate a PHP subscriber with a Java publisher
• These demos ship with ActiveMQ, and can be found in the “examples”
directory
• We’ll be using /examples/openwire/java and /examples/stomp/php
• A Java producer will send 10,000 messages into a topic called “event”, and
a PHP listener will receive those messages
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 28
Important concepts
• Durability – Describes whether a message will be available to consumers later if they are
currently disconnected from the broker
– ActiveMQ defaults all queues to durable, and supports durable topic subscriptions
• Persistence – Allows messages to be written to disk storage, so that they will be
available later if the broker should crash
– ActiveMQ offers persistence through a choice of high-speed journaling databases,
or RDBMS
• High Availability – A factor determining how often a service is available, in this case how
often the broker is up and able to process messages
– ActiveMQ includes many native solutions for HA including shared filesystem
options, or true replication through LevelDB/Zookeeper
• Horizontal Scaling – Load balancing across multiple brokers and/or message
consumers
– ActiveMQ supports highly configurable consumer scaling, along with a Network of
Brokers for chaining multiple brokers together to load balance
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 29
Working with PHP
• ActiveMQ supports a bevy of transport protocols
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 30
Working with PHP
• The native protocol for PHP is Stomp, which is a text-based protocol
very similar to HTTP
• The Stomp library can be downloaded via pear
– pear install pecl.php.net/stomp
• Once the Stomp library has been installed and linked, a Stomp object will
be available which can manage every aspect of communicating with
ActiveMQ:
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 31
Additional features
Message grouping
Scheduled messages
Security framework
Metrics and statistics
Network of Brokers
Inactivity monitoring
Transactions
Fault tolerance
Traffic Shaping
Plugin stack
Virtual destinations
Temporary destinations
Transformation
Load balancing
Client failover
Property encryption
Destination policies
Dispatch policies
Producer flow control
Message swapping
And of course… Camel!
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 32
What is Camel?
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 33
What’s Camel?
• Camel is an open source MOM language developed by Apache and based
on Enterprise Integration Patterns
• Book by Gregor Hohpe and Bobby Woolf
• Centers around 60+ common patterns found
in Enterprise integration projects
• Defines these common patterns in a vendor
neutral way
• Camel aims to provide a language which
implements these patterns, in a style
modeled after the UNIX pipeline
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 34
Integration patterns
• Content Based Router
– Where a message is routed to disparate endpoints based on message criteria
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 35
Integration patterns
• Content Enricher
– In which a basic message enters the pattern, takes data from another
source, and then adds it to the message
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 36
Integration patterns
• Recipient List
– A message is broadcast to n channels based on message criteria. When this message
is broadcast to all channels regardless, it becomes a Multicast pattern
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 37
Integration patterns
• Scatter-Gather
– In which messages are broadcast out to disparate endpoints and results are
aggregated into a single message
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 38
How does it work?
• Camel uses a repeatable, normalized concatenation of “Processor” and
”Message” objects in a group called an Exchange
• There is an ”In” message, a “Processor”, and an “Out” message
Processor
In Out
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 39
How does it work?
• And, you can chain these Exchanges together – just like piping commands
through UNIX – and form a Camel Route
• The “Out” message of a previous Exchange becomes the “In” message of a
new Exchange:
P
In Out
P
In Out
P
In Out
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 40
Camel magic
• Now here’s the magical part – a Processor can be anything you want
• Components in Camel work by creating Processors that perform various
business functions
• The components can be chained together to build Integration Patterns
• For instance, you can have an “FTP” processor that takes the In message
and initiates an FTP session
• Or you can have an “SMTP” processor that takes the In message and
sends an email with it
• This is in addition to Camel’s many built-in patterns, such as LoadBalance,
Multicast, DataSets, etc.
• And there are a lot of components:
http://camel.apache.org/components.html
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 41
Embedded scripting languages
• Camel also contains a number of embedded script languages that can be
used for various purposes
• Simple: The Simple query language can be used to introspect message
headers, payloads, and properties, and is useful when routing messages
based on their content
• Xpath: The XPath query language will let you traverse XML structures
and query for attribute and entity values, which is great for routing
messages based on their XML content
• JSONPath: Just like XPath, except for JSON-structured messages
• Groovy: The Groovy scripting language can be used for more advanced
data introspection and manipulation
• JavaScript: Yes, you can do entire processors in JavaScript
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 42
Camel source
• Camel routes can be coded in Java POJO
• Or by using Camel Spring DSL XML files
from("activemq:foo").filter().
xquery("//foo").
to("activemq:bar")
<route xmlns="http://camel.apache.org/schema/spring" id="TimerClient">
<from uri=”activemq:topic:broadcastData"/>
<setBody>
<constant>This is a test JMS message.</constant>
</setBody>
<to uri="activemq:Test_ActiveMQ_Route.inQueue"/>
</route>
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 43
Camel deployment
• Camel can be deployed in a number of ways:
• It can be deployed as a Java Web App using Spring or POJO
• Standalone Camel routes can also be deployed using Maven and Camel
• Spring Boot can launch Camel routes
• Camel can be embedded within another Java application
• Or within a Java-based container such as Jetty, Tomcat, JBoss/Wildfly, and
others
• ActiveMQ contains the Camel core libraries and can launch and deploy
Camel routes
• And OSGI containers like Karaf or its Servicemix counterpart can launch
Camel routes
• Standalone Camel routes scale very nicely in microservice containers as
well
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 44
Camel development
• Major IDEs like Eclipse and IntelliJ can ease Camel development by
allowing routes to execute within the IDE
• As of Camel 2.16, comprehensive in-line tools are available which allow
auto-completion and even list every parameter of an available component
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 45
Camel development
• But HawtIO is my current favorite way to prototype with Camel
• HawtIO allows for visual debugging of routes, tracing of message
lifecycle, diagram driven development, as well as monitoring
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 46
Camel monitoring
• Camel has a robust set of JMX instrumentation beans which can be
looked at to gain more information on the route
• Any JMX-capable enterprise monitoring solution will be a good fit for
Camel
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 47
Demo: Content based router
• In this example, we will be using a very simple content based router
• In fact, we’ll be using the Simple query language to introspect a JMS
header in a message, and routing it to a destination based on the contents
of that header
• We will use Camel deployed directly into ActiveMQ, and we’ll write it from
scratch against a clean ActiveMQ install
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 48
Putting it all together
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 49
The big picture
• So, ActiveMQ provides a platform by which disparate clients can interact
with one another in a normalized way
• ActiveMQ’s wealth of clients, including the Stomp, REST, and WebSocket
connectors, means almost anything can be a client
• It’s queueing mechanisms make reliable asynchronous messaging a
breeze
• Camel can provide sophisticated routing, transformation, and component-
driven integration
• And Camel’s huge component library ensures that any application can
route through Camel
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 50
Demo: ActiveMQ, Camel, and PHP
• In this demo, we’ll take a simple web form, and process its data through a
synchronous web service as well as an asynchronous queue
• Camel will provide the web service endpoint, and the form will call it
synchronously
• PHP’s Stomp client will be used to create a message on a queue for the
asynchronous transaction
• Delay has been built in to the messaging flow for both workflows
© 2016 Rogue Wave Software, Inc. All Rights Reserved. 51
Questions?
Feel free to reach out after, too!
justin.reock@roguewave.com

More Related Content

What's hot

What's new in IBM MQ, March 2018
What's new in IBM MQ, March 2018What's new in IBM MQ, March 2018
What's new in IBM MQ, March 2018David Ware
 
InterConnect 2016: What's new in IBM MQ
InterConnect 2016: What's new in IBM MQInterConnect 2016: What's new in IBM MQ
InterConnect 2016: What's new in IBM MQDavid Ware
 
IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?David Ware
 
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersDavid Ware
 
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen... HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...Matt Leming
 
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster RecoveryIBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster RecoveryRob Convery
 
IBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryIBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryMarkTaylorIBM
 
IBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ ClustersIBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ ClustersIBM Systems UKI
 
IBM MQ: Using Publish/Subscribe in an MQ Network
IBM MQ: Using Publish/Subscribe in an MQ NetworkIBM MQ: Using Publish/Subscribe in an MQ Network
IBM MQ: Using Publish/Subscribe in an MQ NetworkDavid Ware
 
IBM MQ Advanced - IBM InterConnect 2016
IBM MQ Advanced - IBM InterConnect 2016IBM MQ Advanced - IBM InterConnect 2016
IBM MQ Advanced - IBM InterConnect 2016Leif Davidsen
 
InterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-serviceInterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-serviceDavid Ware
 
Hhm 3474 mq messaging technologies and support for high availability and acti...
Hhm 3474 mq messaging technologies and support for high availability and acti...Hhm 3474 mq messaging technologies and support for high availability and acti...
Hhm 3474 mq messaging technologies and support for high availability and acti...Pete Siddall
 
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ NetworkIBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ NetworkDavid Ware
 
Hhm 3479 mq clustering and shared queues for high availability
Hhm 3479 mq clustering and shared queues for high availabilityHhm 3479 mq clustering and shared queues for high availability
Hhm 3479 mq clustering and shared queues for high availabilityPete Siddall
 
IBM MQ Disaster Recovery
IBM MQ Disaster RecoveryIBM MQ Disaster Recovery
IBM MQ Disaster RecoveryMarkTaylorIBM
 
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ ClustersDavid Ware
 
What's New in IBM MQ - Version 8
What's New in IBM MQ - Version 8What's New in IBM MQ - Version 8
What's New in IBM MQ - Version 8MarkTaylorIBM
 
IBM Integration Bus High Availability Overview
IBM Integration Bus High Availability OverviewIBM Integration Bus High Availability Overview
IBM Integration Bus High Availability OverviewPeter Broadhurst
 
3433 IBM messaging security why securing your environment is important-feb2...
3433   IBM messaging security why securing your environment is important-feb2...3433   IBM messaging security why securing your environment is important-feb2...
3433 IBM messaging security why securing your environment is important-feb2...Robert Parker
 
MuleSoft meetup_sg_no2_may19
MuleSoft meetup_sg_no2_may19MuleSoft meetup_sg_no2_may19
MuleSoft meetup_sg_no2_may19Julian Douch
 

What's hot (20)

What's new in IBM MQ, March 2018
What's new in IBM MQ, March 2018What's new in IBM MQ, March 2018
What's new in IBM MQ, March 2018
 
InterConnect 2016: What's new in IBM MQ
InterConnect 2016: What's new in IBM MQInterConnect 2016: What's new in IBM MQ
InterConnect 2016: What's new in IBM MQ
 
IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?
 
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
 
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen... HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster RecoveryIBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
IBM Integration Bus & WebSphere MQ - High Availability & Disaster Recovery
 
IBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryIBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster Recovery
 
IBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ ClustersIBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ Clusters
 
IBM MQ: Using Publish/Subscribe in an MQ Network
IBM MQ: Using Publish/Subscribe in an MQ NetworkIBM MQ: Using Publish/Subscribe in an MQ Network
IBM MQ: Using Publish/Subscribe in an MQ Network
 
IBM MQ Advanced - IBM InterConnect 2016
IBM MQ Advanced - IBM InterConnect 2016IBM MQ Advanced - IBM InterConnect 2016
IBM MQ Advanced - IBM InterConnect 2016
 
InterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-serviceInterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-service
 
Hhm 3474 mq messaging technologies and support for high availability and acti...
Hhm 3474 mq messaging technologies and support for high availability and acti...Hhm 3474 mq messaging technologies and support for high availability and acti...
Hhm 3474 mq messaging technologies and support for high availability and acti...
 
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ NetworkIBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
 
Hhm 3479 mq clustering and shared queues for high availability
Hhm 3479 mq clustering and shared queues for high availabilityHhm 3479 mq clustering and shared queues for high availability
Hhm 3479 mq clustering and shared queues for high availability
 
IBM MQ Disaster Recovery
IBM MQ Disaster RecoveryIBM MQ Disaster Recovery
IBM MQ Disaster Recovery
 
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
 
What's New in IBM MQ - Version 8
What's New in IBM MQ - Version 8What's New in IBM MQ - Version 8
What's New in IBM MQ - Version 8
 
IBM Integration Bus High Availability Overview
IBM Integration Bus High Availability OverviewIBM Integration Bus High Availability Overview
IBM Integration Bus High Availability Overview
 
3433 IBM messaging security why securing your environment is important-feb2...
3433   IBM messaging security why securing your environment is important-feb2...3433   IBM messaging security why securing your environment is important-feb2...
3433 IBM messaging security why securing your environment is important-feb2...
 
MuleSoft meetup_sg_no2_may19
MuleSoft meetup_sg_no2_may19MuleSoft meetup_sg_no2_may19
MuleSoft meetup_sg_no2_may19
 

Viewers also liked

IoT with Apache ActiveMQ, Camel & Spark
IoT with Apache ActiveMQ, Camel & SparkIoT with Apache ActiveMQ, Camel & Spark
IoT with Apache ActiveMQ, Camel & SparkRed Hat Developers
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelClaus Ibsen
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixghessler
 
Jms introduction
Jms introductionJms introduction
Jms introductionBui Kiet
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixBruce Snyder
 
MicroService and MicroContainer with Apache Camel
MicroService and MicroContainer with Apache CamelMicroService and MicroContainer with Apache Camel
MicroService and MicroContainer with Apache CamelCharles Moulliard
 
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewApache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewMarcelo Jabali
 
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBIServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBIGert Vanthienen
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
Getting started with Enterprise Application Integration (EAI) using Enterpris...
Getting started with Enterprise Application Integration (EAI) using Enterpris...Getting started with Enterprise Application Integration (EAI) using Enterpris...
Getting started with Enterprise Application Integration (EAI) using Enterpris...Tamim Khan
 

Viewers also liked (11)

IoT with Apache ActiveMQ, Camel & Spark
IoT with Apache ActiveMQ, Camel & SparkIoT with Apache ActiveMQ, Camel & Spark
IoT with Apache ActiveMQ, Camel & Spark
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMix
 
Jms introduction
Jms introductionJms introduction
Jms introduction
 
Enabling Security For ActiveMQ JMX Access
Enabling Security For ActiveMQ JMX AccessEnabling Security For ActiveMQ JMX Access
Enabling Security For ActiveMQ JMX Access
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMix
 
MicroService and MicroContainer with Apache Camel
MicroService and MicroContainer with Apache CamelMicroService and MicroContainer with Apache Camel
MicroService and MicroContainer with Apache Camel
 
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewApache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
 
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBIServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Getting started with Enterprise Application Integration (EAI) using Enterpris...
Getting started with Enterprise Application Integration (EAI) using Enterpris...Getting started with Enterprise Application Integration (EAI) using Enterpris...
Getting started with Enterprise Application Integration (EAI) using Enterpris...
 

Similar to ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel

Integrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelIntegrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelJustin Reock
 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youRogue Wave Software
 
Rabbitmq an amqp message broker
Rabbitmq an amqp message brokerRabbitmq an amqp message broker
Rabbitmq an amqp message brokerANASYS
 
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented MiddlewareADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented MiddlewareDATAVERSITY
 
The Overview of Microservices Architecture
The Overview of Microservices ArchitectureThe Overview of Microservices Architecture
The Overview of Microservices ArchitectureParia Heidari
 
AWS Initiate Day Dublin 2019 – Breaking down the Monoliths
AWS Initiate Day Dublin 2019 – Breaking down the MonolithsAWS Initiate Day Dublin 2019 – Breaking down the Monoliths
AWS Initiate Day Dublin 2019 – Breaking down the MonolithsAmazon Web Services
 
Scalable Fault-tolerant microservices
Scalable Fault-tolerant microservicesScalable Fault-tolerant microservices
Scalable Fault-tolerant microservicesMahesh Veerabathiran
 
Open Source Middleware for the Cloud: WSO2 Stratos
Open Source Middleware for the Cloud: WSO2 StratosOpen Source Middleware for the Cloud: WSO2 Stratos
Open Source Middleware for the Cloud: WSO2 StratosWSO2
 
Deploying Containers in Production and at Scale
Deploying Containers in Production and at ScaleDeploying Containers in Production and at Scale
Deploying Containers in Production and at ScaleMesosphere Inc.
 
Open source applied: Real-world uses
Open source applied: Real-world usesOpen source applied: Real-world uses
Open source applied: Real-world usesRogue Wave Software
 
ActiveMQ interview Questions and Answers
ActiveMQ interview Questions and AnswersActiveMQ interview Questions and Answers
ActiveMQ interview Questions and Answersjeetendra mandal
 
Cloud Openshift paas
Cloud Openshift paasCloud Openshift paas
Cloud Openshift paasAtlas Systems
 
Soa 22 software as a service and soa
Soa 22 software as a service and soaSoa 22 software as a service and soa
Soa 22 software as a service and soaVaibhav Khanna
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureKelly Goetsch
 
Lucid logistics case study
Lucid logistics case studyLucid logistics case study
Lucid logistics case studyVMware Tanzu
 
IBM Message Hub service in Bluemix - Apache Kafka in a public cloud
IBM Message Hub service in Bluemix - Apache Kafka in a public cloudIBM Message Hub service in Bluemix - Apache Kafka in a public cloud
IBM Message Hub service in Bluemix - Apache Kafka in a public cloudAndrew Schofield
 

Similar to ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel (20)

Integrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelIntegrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and Camel
 
Message oriented middleware
Message oriented middlewareMessage oriented middleware
Message oriented middleware
 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for you
 
Rabbitmq an amqp message broker
Rabbitmq an amqp message brokerRabbitmq an amqp message broker
Rabbitmq an amqp message broker
 
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented MiddlewareADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
 
The Overview of Microservices Architecture
The Overview of Microservices ArchitectureThe Overview of Microservices Architecture
The Overview of Microservices Architecture
 
AWS Initiate Day Dublin 2019 – Breaking down the Monoliths
AWS Initiate Day Dublin 2019 – Breaking down the MonolithsAWS Initiate Day Dublin 2019 – Breaking down the Monoliths
AWS Initiate Day Dublin 2019 – Breaking down the Monoliths
 
Scalable Fault-tolerant microservices
Scalable Fault-tolerant microservicesScalable Fault-tolerant microservices
Scalable Fault-tolerant microservices
 
Open Source Middleware for the Cloud: WSO2 Stratos
Open Source Middleware for the Cloud: WSO2 StratosOpen Source Middleware for the Cloud: WSO2 Stratos
Open Source Middleware for the Cloud: WSO2 Stratos
 
Deploying Containers in Production and at Scale
Deploying Containers in Production and at ScaleDeploying Containers in Production and at Scale
Deploying Containers in Production and at Scale
 
Open source applied: Real-world uses
Open source applied: Real-world usesOpen source applied: Real-world uses
Open source applied: Real-world uses
 
ActiveMQ interview Questions and Answers
ActiveMQ interview Questions and AnswersActiveMQ interview Questions and Answers
ActiveMQ interview Questions and Answers
 
Cloud Openshift paas
Cloud Openshift paasCloud Openshift paas
Cloud Openshift paas
 
Making Apache Camel work for you
Making Apache Camel work for you Making Apache Camel work for you
Making Apache Camel work for you
 
Soa 22 software as a service and soa
Soa 22 software as a service and soaSoa 22 software as a service and soa
Soa 22 software as a service and soa
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright Future
 
Lucid logistics case study
Lucid logistics case studyLucid logistics case study
Lucid logistics case study
 
IBM Message Hub service in Bluemix - Apache Kafka in a public cloud
IBM Message Hub service in Bluemix - Apache Kafka in a public cloudIBM Message Hub service in Bluemix - Apache Kafka in a public cloud
IBM Message Hub service in Bluemix - Apache Kafka in a public cloud
 
Kafka tutorial
Kafka tutorialKafka tutorial
Kafka tutorial
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 

More from Justin Reock

Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?Justin Reock
 
Community vs. Commercial Open Source
Community vs. Commercial Open SourceCommunity vs. Commercial Open Source
Community vs. Commercial Open SourceJustin Reock
 
Getting Started with Node.js
Getting Started with Node.jsGetting Started with Node.js
Getting Started with Node.jsJustin Reock
 
Monitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaJustin Reock
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper DiveJustin Reock
 
ZendCon - Linux 101
ZendCon - Linux 101ZendCon - Linux 101
ZendCon - Linux 101Justin Reock
 

More from Justin Reock (8)

Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?
 
Community vs. Commercial Open Source
Community vs. Commercial Open SourceCommunity vs. Commercial Open Source
Community vs. Commercial Open Source
 
Getting Started with Node.js
Getting Started with Node.jsGetting Started with Node.js
Getting Started with Node.js
 
Monitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and Grafana
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
 
Linux 101
Linux 101Linux 101
Linux 101
 
ZendCon - Linux 101
ZendCon - Linux 101ZendCon - Linux 101
ZendCon - Linux 101
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Recently uploaded (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel

  • 1. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 1 Integration and Asynchronous Processing with ActiveMQ and Camel Justin Reock Sr. Director and Lead Architect Rogue Wave OSS Support
  • 2. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 2 Who’s speaking to me?
  • 3. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 3 Justin Reock • Sr. Director and Lead Architect of our OSS Support Team • Way too much experience with ActiveMQ and Camel • Developed our formal instructor-led training • Numerous professional services and training engagements • Early adopter of JMS and Camel • Major FL/OSS evangelist!
  • 4. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 4 What are we going to solve?
  • 5. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 5
  • 6. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 6 Asynchronous processing • No one likes the spinning wheel of doom hope! • We’re going to talk about offloading work to a backend server • We’re going to do it in a way that’s reliable, flexible, and guaranteed • Built on industry standards and vetted against thousands of production systems
  • 7. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 7 What else?
  • 8. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 8 Quick exercise… • I’m going to show you three slides • They all have something in common…. • See if you can figure out what it is!
  • 9. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 9 The Chupacabra…
  • 10. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 10 A magical unicorn…
  • 11. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 11 BillingFulfillment CRME-Commerce A homogeneous enterprise landscape…
  • 12. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 12 Answer  None of these things exist in real life!
  • 13. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 13 I’m listening…
  • 14. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 14 Meet: The solutions! • We’ll be leveraging two related technologies, Apache ActiveMQ and Apache Camel • Apache ActiveMQ is a JMS implementation, and can help with both federation of systems and asynchronous processing • Apache Camel is a sophisticated message oriented middleware language, with hundreds of integration components • But let’s take a step back and answer a couple questions first…
  • 15. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 15 What is JMS?
  • 16. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 16 Messaging and JMS • Applications often have a need to send information back and forth to one another in a normalized fashion • Before the advent of messaging systems, it was often difficult if not impossible to “federate” applications written in disparate languages or residing on heterogeneous platforms • An early goal of Java was to present a language with the power of C which was not hindered by cross-platform issues • JMS, the Java Messaging Service, arose out of a growing need to federate very different systems with each other PHP Application AS400 Application
  • 17. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 17 Messaging and JMS • JMS 1.1 – Java Messaging Service – Intent was to build vendor-neutral specification for sending enterprise messages through Java – JMS is just a specification – Messaging consists of Messages, Queues, and Topics – Transport endpoints are called Producers and Consumers • JMS Provider – These are the vendor-specific implementations of JMS – ActiveMQ is a JMS Provider – A JMS Provider must implement the JMS Spec – A JMS Provider forms the framework for facilitating the use of JMS concepts inside an application – JMS is portable, but JMS providers may not be
  • 18. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 18 What is Message Oriented Middleware?
  • 19. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 19 Message oriented middleware • Technically, MOM is any platform that sends and receives messages between distributed applications • This allows for asynchronous processing, and normalization of data exchanges • Clients connect to a messaging provider, and send and receive messages via that provider
  • 20. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 20 What’s it good for? • Data normalization makes it a lot easier for disparate applications to trade information • Just like in web services, heterogeneous systems can agree on a data “contract” and send and receive data in that format • All the application needs is a client compatible with the messaging provider • And since messages are allowed to queue up on the message provider, it also makes it very easy to perform asynchronous processing • Most message providers offer additional benefits, like guaranteed delivery, options for traffic shaping, high availability, and scaling
  • 21. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 21 What is ActiveMQ?
  • 22. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 22 Apache ActiveMQ • ActiveMQ is a Java-based multi-purpose messaging middleware solution, called a message broker, designed for high throughput and scale • It is useful in a number of situations, including aggregating large amounts of data in an efficient and safe manner, federating disparate or heterogeneous applications across an enterprise, and/or moving data between geographically separated data centers or applications • ActiveMQ supports a number of connection protocols, allowing it to provide connection points between applications coded in different languages, such as Java, C++, .NET, PHP, etc • Customers commonly migrate to ActiveMQ from commercial middleware such as WebSphereMQ, Oracle AQ, TIBCO EMS, and/or MSMQ
  • 23. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 23 Why is it so popular? • ActiveMQ is a mature and well-adopted platform, with thousands of companies using it, and backed by a strong community • It is by far the most flexible OSS message broker available, offering integration points for dozens of application frameworks and languages • ActiveMQ ships with Apache Camel, one of the most revolutionary integration frameworks available, and shares developers and committers with the Apache Camel product • ActiveMQ can be tuned for massive scale, supporting large data sets, such as those generated by the CERN large hadron collider • Its configuration can support numerous traffic and implementation models • ActiveMQ has a powerful statistics and metrics engine, exposing crucial details about the health of the broker and the amount and size of message traffic and client status
  • 24. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 24 Where does it fit? • ActiveMQ acts as integration middleware, sitting between various enterprise applications, data sources, and APIs, and “federating” data between the systems
  • 25. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 25 Where does it fit? • ActiveMQ can also be used as a reliable message buffer • Applications can send messages into ActiveMQ and continue working, knowing that ActiveMQ will guarantee delivery of the message • Or, ActiveMQ can be used to broadcast messages to several different systems • ActiveMQ supports transactions between the broker and the client, so that exceptions can be caught and managed • Using these constructs, you can easily create asynchronous message patterns by sending or receiving messages from ActiveMQ
  • 26. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 26 Destination types Queues • Queues are FIFO buffers of messages • Multiple listeners, or “consumers” can be attached to a single queue, and can round-robin or otherwise balance processing load • This is called “fanning out” • Client libraries can scale up and down consumers as necessary, but only one consumer will ever receive a single copy of a message Topics • These are message broadcast channels • A single message can be broadcast to multiple, single-threaded “subscribers” • Subscribers can scale using “virtual topics” in ActiveMQ, or “shared subscriptions” in JMS 2.0
  • 27. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 27 Quick demo… • Let’s integrate a PHP subscriber with a Java publisher • These demos ship with ActiveMQ, and can be found in the “examples” directory • We’ll be using /examples/openwire/java and /examples/stomp/php • A Java producer will send 10,000 messages into a topic called “event”, and a PHP listener will receive those messages
  • 28. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 28 Important concepts • Durability – Describes whether a message will be available to consumers later if they are currently disconnected from the broker – ActiveMQ defaults all queues to durable, and supports durable topic subscriptions • Persistence – Allows messages to be written to disk storage, so that they will be available later if the broker should crash – ActiveMQ offers persistence through a choice of high-speed journaling databases, or RDBMS • High Availability – A factor determining how often a service is available, in this case how often the broker is up and able to process messages – ActiveMQ includes many native solutions for HA including shared filesystem options, or true replication through LevelDB/Zookeeper • Horizontal Scaling – Load balancing across multiple brokers and/or message consumers – ActiveMQ supports highly configurable consumer scaling, along with a Network of Brokers for chaining multiple brokers together to load balance
  • 29. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 29 Working with PHP • ActiveMQ supports a bevy of transport protocols
  • 30. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 30 Working with PHP • The native protocol for PHP is Stomp, which is a text-based protocol very similar to HTTP • The Stomp library can be downloaded via pear – pear install pecl.php.net/stomp • Once the Stomp library has been installed and linked, a Stomp object will be available which can manage every aspect of communicating with ActiveMQ:
  • 31. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 31 Additional features Message grouping Scheduled messages Security framework Metrics and statistics Network of Brokers Inactivity monitoring Transactions Fault tolerance Traffic Shaping Plugin stack Virtual destinations Temporary destinations Transformation Load balancing Client failover Property encryption Destination policies Dispatch policies Producer flow control Message swapping And of course… Camel!
  • 32. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 32 What is Camel?
  • 33. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 33 What’s Camel? • Camel is an open source MOM language developed by Apache and based on Enterprise Integration Patterns • Book by Gregor Hohpe and Bobby Woolf • Centers around 60+ common patterns found in Enterprise integration projects • Defines these common patterns in a vendor neutral way • Camel aims to provide a language which implements these patterns, in a style modeled after the UNIX pipeline
  • 34. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 34 Integration patterns • Content Based Router – Where a message is routed to disparate endpoints based on message criteria
  • 35. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 35 Integration patterns • Content Enricher – In which a basic message enters the pattern, takes data from another source, and then adds it to the message
  • 36. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 36 Integration patterns • Recipient List – A message is broadcast to n channels based on message criteria. When this message is broadcast to all channels regardless, it becomes a Multicast pattern
  • 37. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 37 Integration patterns • Scatter-Gather – In which messages are broadcast out to disparate endpoints and results are aggregated into a single message
  • 38. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 38 How does it work? • Camel uses a repeatable, normalized concatenation of “Processor” and ”Message” objects in a group called an Exchange • There is an ”In” message, a “Processor”, and an “Out” message Processor In Out
  • 39. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 39 How does it work? • And, you can chain these Exchanges together – just like piping commands through UNIX – and form a Camel Route • The “Out” message of a previous Exchange becomes the “In” message of a new Exchange: P In Out P In Out P In Out
  • 40. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 40 Camel magic • Now here’s the magical part – a Processor can be anything you want • Components in Camel work by creating Processors that perform various business functions • The components can be chained together to build Integration Patterns • For instance, you can have an “FTP” processor that takes the In message and initiates an FTP session • Or you can have an “SMTP” processor that takes the In message and sends an email with it • This is in addition to Camel’s many built-in patterns, such as LoadBalance, Multicast, DataSets, etc. • And there are a lot of components: http://camel.apache.org/components.html
  • 41. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 41 Embedded scripting languages • Camel also contains a number of embedded script languages that can be used for various purposes • Simple: The Simple query language can be used to introspect message headers, payloads, and properties, and is useful when routing messages based on their content • Xpath: The XPath query language will let you traverse XML structures and query for attribute and entity values, which is great for routing messages based on their XML content • JSONPath: Just like XPath, except for JSON-structured messages • Groovy: The Groovy scripting language can be used for more advanced data introspection and manipulation • JavaScript: Yes, you can do entire processors in JavaScript
  • 42. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 42 Camel source • Camel routes can be coded in Java POJO • Or by using Camel Spring DSL XML files from("activemq:foo").filter(). xquery("//foo"). to("activemq:bar") <route xmlns="http://camel.apache.org/schema/spring" id="TimerClient"> <from uri=”activemq:topic:broadcastData"/> <setBody> <constant>This is a test JMS message.</constant> </setBody> <to uri="activemq:Test_ActiveMQ_Route.inQueue"/> </route>
  • 43. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 43 Camel deployment • Camel can be deployed in a number of ways: • It can be deployed as a Java Web App using Spring or POJO • Standalone Camel routes can also be deployed using Maven and Camel • Spring Boot can launch Camel routes • Camel can be embedded within another Java application • Or within a Java-based container such as Jetty, Tomcat, JBoss/Wildfly, and others • ActiveMQ contains the Camel core libraries and can launch and deploy Camel routes • And OSGI containers like Karaf or its Servicemix counterpart can launch Camel routes • Standalone Camel routes scale very nicely in microservice containers as well
  • 44. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 44 Camel development • Major IDEs like Eclipse and IntelliJ can ease Camel development by allowing routes to execute within the IDE • As of Camel 2.16, comprehensive in-line tools are available which allow auto-completion and even list every parameter of an available component
  • 45. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 45 Camel development • But HawtIO is my current favorite way to prototype with Camel • HawtIO allows for visual debugging of routes, tracing of message lifecycle, diagram driven development, as well as monitoring
  • 46. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 46 Camel monitoring • Camel has a robust set of JMX instrumentation beans which can be looked at to gain more information on the route • Any JMX-capable enterprise monitoring solution will be a good fit for Camel
  • 47. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 47 Demo: Content based router • In this example, we will be using a very simple content based router • In fact, we’ll be using the Simple query language to introspect a JMS header in a message, and routing it to a destination based on the contents of that header • We will use Camel deployed directly into ActiveMQ, and we’ll write it from scratch against a clean ActiveMQ install
  • 48. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 48 Putting it all together
  • 49. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 49 The big picture • So, ActiveMQ provides a platform by which disparate clients can interact with one another in a normalized way • ActiveMQ’s wealth of clients, including the Stomp, REST, and WebSocket connectors, means almost anything can be a client • It’s queueing mechanisms make reliable asynchronous messaging a breeze • Camel can provide sophisticated routing, transformation, and component- driven integration • And Camel’s huge component library ensures that any application can route through Camel
  • 50. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 50 Demo: ActiveMQ, Camel, and PHP • In this demo, we’ll take a simple web form, and process its data through a synchronous web service as well as an asynchronous queue • Camel will provide the web service endpoint, and the form will call it synchronously • PHP’s Stomp client will be used to create a message on a queue for the asynchronous transaction • Delay has been built in to the messaging flow for both workflows
  • 51. © 2016 Rogue Wave Software, Inc. All Rights Reserved. 51 Questions? Feel free to reach out after, too! justin.reock@roguewave.com

Editor's Notes

  1. Joke here about how we’re waiting for the slide to load – just kidding, this is actually what we’re solving