SlideShare a Scribd company logo
1 of 66
CamelOne 2013	

June 10-11 2013	

Boston, MA	

1	

Connecting Applications
Everywhere with
ActiveMQ	

Rob Davies	

Technical Director, Fuse Engineering,	

Red Hat Inc.
CamelOne 2013	

CamelOne	

2	

Rob Davies
Technical Director, Red Hat -
h"p://www.redhat.com	

■  Previously CTO of FuseSource - #1 OS
vendor for integration and messaging 	

■  Software projects:	

■  Apache ActiveMQ, 	

■  Apache Camel	

■  Apache ServiceMix	

■  On	
  Expert	
  Group	
  for	
  JSR	
  343:	
  JMS	
  2.0	
  
■  Co-­‐author	
  of	
  AcCveMQ	
  in	
  AcCon:	
  
CamelOne 2013	

CamelOne	

 Why use Message-
Oriented Middleware?	

  Robustness	
  to	
  change	
  
  Time	
  Independence	
  
  LocaCon	
  Independence	
  
  Hide	
  Latency	
  
  Scalability	
  
  Event	
  driven	
  
  Simplicity	
  
  Configurable	
  Quality	
  of	
  Service	
  
  PlaRorm	
  and	
  Language	
  IntegraCon	
  
  Fault	
  tolerant	
  	
  
CamelOne 2013	

CamelOne	

4	

What is Apache ActiveMQ ?
■ Top Level Apache Software Foundation Project	

■ Wildly popular, high performance, reliable message
broker	

■ Connects to nearly everything	

■ Native Java, C/C++, .Net,	

■ AMQP 1.0, MQTT 3.1, STOMP (1.0-1.2) and
OpenWire	

■ STOMP enables Ruby, JS, Perl, Python, PHP,
ActionScript …	

■ Embedded and standalone deployment options
CamelOne 2013	

CamelOne	

Messaging: 	

The Basics
CamelOne 2013	

CamelOne	

Message Channels and
Routing	

•  Message Channels	

•  Named communication between interested parties	

•  JMS calls them ‘Destinations’	

•  Can “tune-in” to multiple channels using wildcards	

•  Can fine-tune message consumption with selectors 	

•  Can route a message based on content
CamelOne 2013	

CamelOne	

Message Channels = JMS Destinations	

Producer	

Broker	

 Consumer	

Consumer	

Consumer	

Destination	

WIDGET	

Destination	

ORDER
CamelOne 2013	

CamelOne	

Point-toPoint Channel: JMS Queues	

Producer	

Consumer	

Consumer	

Consumer	

Queue
CamelOne 2013	

CamelOne	

Publish/Subscribe Channel: JMS Topics	

Producer	

Consumer	

Consumer	

Consumer	

Topic
CamelOne 2013	

CamelOne	

 Message Routing :
Selectors 	

DestinationProducer
Consumer
color='blue'
Consumer
color='red'
CamelOne 2013	

CamelOne	

 Message Routing : Destination
Wildcards	

Topic:
BAR.BEER
Consumer
topic:BAR.>
Topic:
BAR.WINE
Producer
CamelOne 2013	

CamelOne	

Exclusive Consumers	

Producer	

Consumer	

Consumer	

Consumer	

Queue
CamelOne 2013	

CamelOne	

Message Groups	

Like Parallel Exclusive Consumers	

■ Guaranteed ordering of related messages across a
Queue	

■ But – load balancing of messages across multiple
consumers	

■ All messages with the same JMSXGroupID go to
the same consumer 	

■ How you group messages is down to the application’s
producer	

■ To explicitly close a group, set the JMSXGroupSeq
to -1	

	

 13
CamelOne 2013	

CamelOne	

14	

Message Groups code:	

Message message = session.createTextMessage("<foo>hi from Devoxx</foo>");	

message.setStringProperty("JMSXGroupID", ”RHT_NYSE");	

producer.send(message);
	

Message message = session.createTextMessage(foobye from Devoxx/foo);	

message.setStringProperty(JMSXGroupID, ”RHT_NYSE);	

message.setStringProperty(JMSXGroupSeq, -1);	

producer.send(message);




//Starting a Group …
//Close a Group …
CamelOne 2013	

CamelOne	

Deploying ActiveMQ	

ActiveMQ Can run standalone or embedded	

■ As a standalone, or part of a highly available message
broker cluster	

■ Embedded – easy to use an entire broker in JUnit tests
(no need to Mock)	

■ In Tomcat, deployed as a war	

■ In JEE Server – either co-locate – or use client with JCA	

■ ActiveMQ distributions contain a rar for this purpose	

15
CamelOne 2013	

CamelOne	

ActiveMQ: 	

Message Storage
CamelOne 2013	

CamelOne	

Message Delivery Mode	

•  Messages can be persisted – allowing for
decoupled applications	

•  For Queues, any message delivered as
PERSISTENT must be stored on long term storage
before being delivered to a consumer	

•  For Topics, a message delivered as PERSISTENT
will only be stored if there exists a durable subscriber	

•  NON-PERSISTENT messages may also be stored
on disk if the memory limits of the broker have been
reached	

17
CamelOne 2013	

CamelOne	

 Message stores supported by
ActiveMQ 	

■ SQL (JDBC)	

■ SQL (JDBC) with journal	

■ AMQ Message Store	

■ Kaha	

■ KahaDB	

■ LevelDB	

18	

Slow but
popular
	

Don’t use
(deprecated)
	

The “current”
default
	

The “best yet”
CamelOne 2013	

CamelOne	

LevelDB Store vs KahaDB	

•  Fewer index entries per message than KahaDB	

•  Faster recovery when a broker restarts	

•  LevelDB index out-perform Btree index at sequential access .	

•  LevelDB indexes support concurrent read access.	

•  Pauseless data log file garbage collection cycles.	

•  Fewer IOPS to load stored messages.	

•  It exposes it's status via JMX for monitoring
CamelOne 2013	

CamelOne	

ActiveMQ: LevelDB Store
CamelOne 2013	

CamelOne	

ActiveMQ: 	

Protocols
CamelOne 2013	

CamelOne	

OpenWire 	

Advantages:	

•  Fast – optimized for
ActiveMQ	

•  client failover	

•  automatic reconnect	

•  Client load balancing	

•  Flow control	

•  Many advanced features	

22	

Disadvantages:	

	

•  Not a recognized
standard	

•  Only Java, C/C++/.Net	

http://activemq.apache.org/openwire.html
CamelOne 2013	

CamelOne	

MQTT http://mqtt.org	

Advantages:	

•  M2M/”Internet of Things” transport	

•  Proposed as an OASIS standard	

•  Extremely light weight	

•  Growing support from vendors and OS
products	

•  WebSphereMQ	

•  ActiveMQ + Apollo	

•  Mosquitto	

•  RabbitMQ	

23	

Disadvantages:	

•  3.1 does not support
Queues	

•  Advanced features not
standard	

•  Flow control	

•  Failover etc.
CamelOne 2013	

CamelOne	

AMQP – see www.amqp.org	

Advantages:	

•  AMQP 1.0 OASIS
standard	

•  Proposed as an OASIS
standard	

•  Commoditizes the
Broker	

24	

Disadvantages:	

•  One size doesn’t really fit
all	

•  Currently no plans for IBM
or Tibco to adopt it
CamelOne 2013	

CamelOne	

STOMP – http://stomp.github.com	

Advantages:	

•  Easy to use text based
protocol	

•  Can use telnet as a client	

•  Defacto standard:	

•  ActiveMQ + Apollo	

•  HornetQ	

•  RabbitMQ	

•  PocoMQ	

•  StompServer	

•  OpenMQ	

•  Many more …	

25	

Disadvantages:	

•  Not as fast as binary
formats
CamelOne 2013	

CamelOne	

But there’s more: WebSockets	

STOMP is a natural wire protocol for WebSockets	

26	

ActiveMQ
Client
(Browser)
WebSocket
Connector
Stomp
Converter
ActiveMQ
(Backend)
TCP
(WebSocket)
HTTP(S)
Request/Response
1. HTTP Request (Upgrade)
2. HTTP Response
4. Message received
from Topic
5. Send WebSocket
Data
3. Stomp Subscribe
CamelOne 2013	

CamelOne	

ActiveMQ: 	

Management
CamelOne 2013	

CamelOne	

Command line:	

•  Activemq	

•  activemq-admin	

•  activemq-admin stop	

•  activemq-admin query	

•  activemq-admin bstat	

•  activemq-admin
browse	

•  activemq-admin list	

28	

Runs the
broker
	

Manages the
broker
CamelOne 2013	

CamelOne	

ActiveMQ WebConsole	

http://localhost:8161/admin	

29
CamelOne 2013	

CamelOne	

Introducing hawtio …	

30
CamelOne 2013	

CamelOne	

ActiveMQ: 	

Enterprise
Features
CamelOne 2013	

CamelOne	

High Availability	

ActiveMQ	

Cluster	

ActiveMQ Client	

Supported by both Java and C++ OpenWire clients
CamelOne 2013	

CamelOne	

Broker Networks (Store and
Forward)
CamelOne 2013	

CamelOne	

 Network of Brokers : Geographically
Dispersed
CamelOne 2013	

CamelOne	

Network of Brokers : Network with Master/Slave
CamelOne 2013	

CamelOne	

Scaling Networks of Brokers	

•  Brokers share routing information across networks	

•  All destinations are considered Global	

•  This is really convenient	

•  Though it starts to get problematic with 1000’s of
brokers	

•  However – we can do filtering to shape the traffic
across networks 	

•  But this involves a lot of manual configuration 	

36	

 crikey!
	


	


	


CamelOne 2013	

CamelOne	

•  Brokers share routing information across networks	

•  All destinations are considered Global	

•  This is really convenient	

•  Though it starts to get problematic with 1000’s of
brokers	

•  However – we can do filtering to shape the traffic
across networks 	

•  But this involves a lot of manual configuration 	

37	

Time to talk about
Apache Camel …
	

Scaling Networks of Brokers
CamelOne 2013	

CamelOne	

ActiveMQ with embedded Camel	

Service
Consumer
Consumer
ActiveMQ Broker
Flexible and is faster J
CamelOne 2013	

CamelOne	

39	

ActiveMQ with embedded Camel	

beans	

   broker brokerName=testBroker  xmlns=http://activemq.apache.org/schema/core	

    transportConnectors	

      transportConnector uri=tcp://localhost:61616/	

    /transportConnectors	

  /broker	

  import resource=camel.xml/	

/beans	

Import Camel into ActiveMQ broker config:
CamelOne 2013	

CamelOne	

40	

Setup Camel Context in the
usual way	

beans	

…	

camelContext id=camel xmlns=http://camel.apache.org/schema/spring	

route	

	

descriptionExample Camel Route/description	

	

from uri=activemq:topic:audio/	

	

setHeader headerName=JMS_AMQP_MESSAGE_FORMAT	

	

 	

constant0/constant	

	

/setHeader	

	

to uri=activemq:queue:audio/	

/route	

/camelContext	

…	

/beans
CamelOne 2013	

CamelOne	

Scaling Networks – use Apache Camel	

•  Allows for non-chatty networks to be
established 	

•  Routing information can be externalized to
the broker	

•  Successfully used in production for 1000’s
of brokers today	

41
CamelOne 2013	

CamelOne	

More problems
with Large
Deployments
CamelOne 2013	

CamelOne	

 Problems – Deploying and
maintenance	

•  Main problems	

•  Installing brokers on multiple hosts	

•  ssh, untar, set directories and environment	

•  Setting configuration manually for every broker	

•  copying xml config, tweaking, testing	

•  Updating configuration across cluster	

•  Upgrading brokers	

It’s a tedious and error-prone process
CamelOne 2013	

CamelOne	

 Problems – Traditional best-
practice tips	

•  Keep XML as a template and configure node-specific
details through properties	

•  Keep configuration in SVC system (git, svn, ...)	

•  Keep configuration separate from installation for
easier upgrades	

Deployment with Fuse Fabric moves it to the next
level
CamelOne 2013	

CamelOne	

Problems - Clients	

•  Topology is very “static”	

•  Clients need to be aware of topology	

•  Clients need to know broker locations	

•  Changes are not easy as clients need to be updated	

•  Adding new resources (brokers) requires client updates	

•  Not suitable for “cloud” deployments	

Fuse Fabric makes deployments more “elastic”
CamelOne 2013	

CamelOne	

Fuse Fabric to
the rescue!
CamelOne 2013	

CamelOne	

Fuse Fabric – Key Features	

Fuse	
  IDE	
  	
   hawCo	
  
ActiveMQ	

Cluster	

Camel	

Endpoints	

ServiceMix	

Runtime 	

Registry	

•  Supports Hybrid deployments	

•  Distributed Configuration	

•  Runtime registry	

•  Centralized Management
CamelOne 2013	

CamelOne	

FuseMQ features	

•  mq-base profile	

•  Defines OSGi features and bundles to be installed	

•  Defines basic broker settings	

•  mq-create command	

•  Helper command for creating brokers	

•  Creates an new profile based on mq-base	

•  Optionally creates new containers	

•  Assigns the profile to containers (essentially starts the broker)	

FuseMQ = ActiveMQ deployed in Apache Karaf +
CamelOne 2013	

CamelOne	

 Why is Integration and
Messaging Important ?	

Head Office
Enterprises
Need to
know
Everything!
CamelOne 2013	

CamelOne	

 There are more things to
Integrate with!
CamelOne 2013	

CamelOne	

The Internet of Things	

•  Uniquely identifiable objects and their virtual
representations in an internet-like structure	

•  Originally defined by Kevin Ashton, co-founder of
Auto-ID center at MIT	

•  Today its meaning has evolved to encompass a
world where physical objects are integrated into the
information network, and where physical objects
participate in business processes.	

51
CamelOne 2013	

CamelOne	

Machine to Machine	

•  M2M involves collection and transmission of event
level data (used to be called telemetry) from
intelligent devices	

•  Machines can interact over the net – and/or
attached networks – by wired and wireless
networks	

•  Payloads are typically minimal (temperature,
pressure, location, metering etc.)	

52
CamelOne 2013	

CamelOne	

Internet of Things	

Time	
  
Connected	
  Devices	
  on	
  the	
  
internet	
  
2010	
  2000	
   2020	
  
1	
  Billion	
  
50	
  Billion	
  
10	
  	
  Billion	
  
Ubiquitous	
  
posiConing	
  –	
  
locaCng	
  people	
  and	
  
everyday	
  objects	
  	
  
RFID	
  tags	
  for	
  
Inventory	
  control	
  
Advanced	
  sensors,	
  
Enterprises	
  fully	
  
connected:	
  integraCon	
  
of	
  everything	
  
Geo-­‐located	
  devices	
  
Microcontrollers	
  
internet	
  enabled	
  
Vending	
  machines,	
  lone	
  
workers,	
  POS,	
  vehicles,	
  
planes,	
  tolls,	
  power	
  
systems,	
  transport,	
  
telemedicine,	
  	
  home	
  
appliances,	
  power	
  
systems,	
  etc.	
  
CamelOne 2013	

CamelOne	

M2M Examples	

•  Smart Energy –	

Smart Grid uses smart meters for monitoring energy uses by premises for billing,
substation and transmission line monitoring, energy production (renewables)	

•  Inventory Control –	

smart labels and RFID tags – connected scanners pass information upstream to
servers for monitoring	

•  In-Vehicle Systems	

Maintenance information, global positioning, ‘black-box’ (speed and driving
habits), wireless payments for tolls/gas	

•  Environmental Monitoring	

Weather stations (temperature, air-pressure), ocean monitors, earth
movements, volcanic activity crop yields etc.	

•  Livestock monitoring	

Cow herds, monitored for optimum time for milking, sheep herds for location	

54
CamelOne 2013	

CamelOne	

M2M Topology	

55	

Gateway	

Hadoop	

	

	

Servers	

Analytics	

Gateway	

Internet	

Mesh Network	

Mobile wireless
CamelOne 2013	

CamelOne	

Power Consumption!	

•  Battery life for mobiles, power consumption for
smart devices is an important consideration.	

•  Facebook use MQTT for real-time updates –
efficiency was one of the things considered	

•  MQTT is more efficient at establishing connections,
sends information more reliably, and consumes less
power to transmit data than HTTP.	

56
CamelOne 2013	

CamelOne	

Deluge of Data	

•  Billions of devices send information will require
storage and processing of terabytes or even
petabytes of data.	

•  Big Data Ingestion: Processing of vast amounts of
data business generates to make good decisions is
only half the problem. Ingesting that data from all
areas of the enterprise will require TBs of data to be
ingested in highly reliable and scalable way. 	

57
CamelOne 2013	

CamelOne	

Need an Eco system of technologies 	

Dev	

•  Integration is getting harder	

•  Traditional message brokers are
key to connect “everything”	

•  Multiple protocols need to be
supported	

•  Camel can provide integration at
the edges – and the data center	

•  Technologies like Fuse Fabric
provide centralized provisioning and
management	

•  Need to mix protocols, brokers and
“message routers” to scale 	

	

	

FuseMQ	

Clusters	

Arrival
Airport 1
CamelOne 2013	

CamelOne	

Demo Time!
CamelOne 2013	

CamelOne	

 Messaging through the Internet of
Things	

	

	

ActiveMQ	

AMQP/MQTT	

routers	

AMQP/MQTT	

routers	

AMQP/MQTT	

routers	

MQTT	
  
MQTT-­‐S	
  
AMQP	
  
AMQP	
  
AMQP	
  
MQTT	
  
MQTT	
  
websockets	
  
CamelOne 2013	

CamelOne	

Simplified demo	

Java MQTT Client	

AMQP	
  
MQTT	
  
ActiveMQ	

MQTT/AMQP	

Gateway	

ActiveMQ	

AMQP/OpenWire	

Broker	

 JMS OpenWire Client
CamelOne 2013	

CamelOne	

What is Arduino ?	

•  Open Source Hardware microcontroller	

•  Cheap and easily available.	

•  Open Source Software.	

•  Widespread: many projects.	

•  Extra HW (shields) available (e.g. WiFi shield)
CamelOne 2013	

CamelOne	

63	
  
USB
7-12 v
3 v GRD 5 v Analog Input Pins
Digital Input/Output Pins
Pins with ~ are PWM
[Analog Output]
GRD
Transmitter/Receiver
Serial Connection
Microcontroller ATmega328 	

OperatingVoltage 5V 	

InputVoltage (recommended)7-12V 	

InputVoltage (limits)6-20V 	

Digital I/O Pins 14 	

(of which 6 provide PWM output) 	

Analog Input Pins 6 	

DC Current per I/O Pin 40 mA 	

DC Current for 3.3V Pin 50 mA
CamelOne 2013	

CamelOne	

Arduino Programming	

•  3 types of memory on Arduino	

•  Flash memory (program space) – 32 Kb	

•  SRAM – used by sketches – 2 Kb	

•  EPROM – long term memory – 1 Kb	

•  Programming language based on Wiring: C/C++ library
designed to make input/output easier. Programs are
called sketches.	

•  Arduino has a simple IDE, available on Windows, Linux
and Mac
CamelOne 2013	

CamelOne	

Arduino MQTT to WebSockets	

Arduino 	

AMQP	
  
MQTT	
  
ActiveMQ	

MQTT/AMQP	

Gateway	

ActiveMQ	

AMQP/WebSockets	

Broker	

 HTML 5/WebSockets
CamelOne 2013	

CamelOne	

Useful Resources:	

•  http://activemq.apache.org	

•  http://camel.apache.org 	

•  http://fuse.fusesource.org/fabric/docs/overview.html	

•  http://fuse.fusesource.org/mq/docs/mq-fabric.html	

•  https://github.com/fusesource/fuseide	

•  http://hawt.io	

•  http://www.arduino.cc/	

Messaging and
Integration
Developer tooling
Management
Configuration and
provisioning
Arduino

More Related Content

What's hot

An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Prometheus design and philosophy
Prometheus design and philosophy   Prometheus design and philosophy
Prometheus design and philosophy Docker, Inc.
 
Java 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgradeJava 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgradeSimone Bordet
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVMSHASHI KUMAR
 
Migrating with Debezium
Migrating with DebeziumMigrating with Debezium
Migrating with DebeziumMike Fowler
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed LockJadson Santos
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondKaushal Dhruw
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersKostas Saidis
 
Weblogic application server
Weblogic application serverWeblogic application server
Weblogic application serverAnuj Tomar
 
OVN operationalization at scale at eBay
OVN operationalization at scale at eBayOVN operationalization at scale at eBay
OVN operationalization at scale at eBayAliasgar Ginwala
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with PrometheusShiao-An Yuan
 
19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQWoo Young Choi
 
Enterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQEnterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQelliando dias
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11Arto Santala
 
From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0VMware Tanzu
 
Deployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation SlidesDeployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation SlidesSlideTeam
 

What's hot (20)

An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Prometheus design and philosophy
Prometheus design and philosophy   Prometheus design and philosophy
Prometheus design and philosophy
 
Java 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgradeJava 9/10/11 - What's new and why you should upgrade
Java 9/10/11 - What's new and why you should upgrade
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
 
Migrating with Debezium
Migrating with DebeziumMigrating with Debezium
Migrating with Debezium
 
Hazelcast Distributed Lock
Hazelcast Distributed LockHazelcast Distributed Lock
Hazelcast Distributed Lock
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & Beyond
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
 
Weblogic application server
Weblogic application serverWeblogic application server
Weblogic application server
 
OVN operationalization at scale at eBay
OVN operationalization at scale at eBayOVN operationalization at scale at eBay
OVN operationalization at scale at eBay
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
 
Building with Gradle
Building with GradleBuilding with Gradle
Building with Gradle
 
Maven
MavenMaven
Maven
 
19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ
 
Enterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQEnterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQ
 
Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle
 
Migrating to Java 11
Migrating to Java 11Migrating to Java 11
Migrating to Java 11
 
From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0From Spring Framework 5.3 to 6.0
From Spring Framework 5.3 to 6.0
 
Maven ppt
Maven pptMaven ppt
Maven ppt
 
Deployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation SlidesDeployment Strategies Powerpoint Presentation Slides
Deployment Strategies Powerpoint Presentation Slides
 

Similar to Connecting Applications Everywhere with ActiveMQ

Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-finalChristian Posta
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsFederico Michele Facca
 
JUDCon2014-ScalableMessagingWithJBossA-MQ and Apache Camel
JUDCon2014-ScalableMessagingWithJBossA-MQ and Apache CamelJUDCon2014-ScalableMessagingWithJBossA-MQ and Apache Camel
JUDCon2014-ScalableMessagingWithJBossA-MQ and Apache CamelNaveen Raj Balasubramaniam
 
Mom those things v1
Mom those things v1 Mom those things v1
Mom those things v1 von gosling
 
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...OpenStack Korea Community
 
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0WSO2
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE
 
Low Latency Mobile Messaging using MQTT
Low Latency Mobile Messaging using MQTTLow Latency Mobile Messaging using MQTT
Low Latency Mobile Messaging using MQTTHenrik Sjöstrand
 
Test Strategy For Future Cloud Architecture
Test Strategy For Future Cloud ArchitectureTest Strategy For Future Cloud Architecture
Test Strategy For Future Cloud ArchitectureMaheshShri1
 
Cloud-based performance testing
Cloud-based performance testingCloud-based performance testing
Cloud-based performance testingabhinavm
 
quickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmqquickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmqjorgesimao71
 
Enterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMSEnterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMSBruce Snyder
 
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...Peter Broadhurst
 
Connecting applicationswitha mq
Connecting applicationswitha mqConnecting applicationswitha mq
Connecting applicationswitha mqRob Davies
 
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...Frank Munz
 
f2f-overview12.ppt
f2f-overview12.pptf2f-overview12.ppt
f2f-overview12.pptwentaozhu3
 
f2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middlewaref2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middlewarendonikristi98
 

Similar to Connecting Applications Everywhere with ActiveMQ (20)

Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
 
IBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQIBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQ
 
Making Apache Camel work for you
Making Apache Camel work for you Making Apache Camel work for you
Making Apache Camel work for you
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platforms
 
JUDCon2014-ScalableMessagingWithJBossA-MQ and Apache Camel
JUDCon2014-ScalableMessagingWithJBossA-MQ and Apache CamelJUDCon2014-ScalableMessagingWithJBossA-MQ and Apache Camel
JUDCon2014-ScalableMessagingWithJBossA-MQ and Apache Camel
 
Mom those things v1
Mom those things v1 Mom those things v1
Mom those things v1
 
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
[OpenStack Days Korea 2016] Track1 - Mellanox CloudX - Acceleration for Cloud...
 
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
Low Latency Mobile Messaging using MQTT
Low Latency Mobile Messaging using MQTTLow Latency Mobile Messaging using MQTT
Low Latency Mobile Messaging using MQTT
 
Test Strategy For Future Cloud Architecture
Test Strategy For Future Cloud ArchitectureTest Strategy For Future Cloud Architecture
Test Strategy For Future Cloud Architecture
 
Cloud-based performance testing
Cloud-based performance testingCloud-based performance testing
Cloud-based performance testing
 
quickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmqquickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmq
 
OpenMQ Aquarium Paris
OpenMQ Aquarium ParisOpenMQ Aquarium Paris
OpenMQ Aquarium Paris
 
Enterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMSEnterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMS
 
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
 
Connecting applicationswitha mq
Connecting applicationswitha mqConnecting applicationswitha mq
Connecting applicationswitha mq
 
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...What You Should Know About WebLogic Server 12c (12.2.1.2)  #oow2015 #otntour2...
What You Should Know About WebLogic Server 12c (12.2.1.2) #oow2015 #otntour2...
 
f2f-overview12.ppt
f2f-overview12.pptf2f-overview12.ppt
f2f-overview12.ppt
 
f2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middlewaref2f-overview1-presentation about rabbitmq and middleware
f2f-overview1-presentation about rabbitmq and middleware
 

More from Rob Davies

Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the CloudRob Davies
 
Messaging For the Cloud and Microservices
Messaging For the Cloud and MicroservicesMessaging For the Cloud and Microservices
Messaging For the Cloud and MicroservicesRob Davies
 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesRob Davies
 
Enterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQEnterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQRob Davies
 
How opensourceworks
How opensourceworksHow opensourceworks
How opensourceworksRob Davies
 

More from Rob Davies (7)

Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the Cloud
 
Messaging For the Cloud and Microservices
Messaging For the Cloud and MicroservicesMessaging For the Cloud and Microservices
Messaging For the Cloud and Microservices
 
Fabric8 mq
Fabric8 mqFabric8 mq
Fabric8 mq
 
Fuse overview
Fuse overviewFuse overview
Fuse overview
 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application Bundles
 
Enterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQEnterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQ
 
How opensourceworks
How opensourceworksHow opensourceworks
How opensourceworks
 

Recently uploaded

TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 

Recently uploaded (20)

TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 

Connecting Applications Everywhere with ActiveMQ

  • 1. CamelOne 2013 June 10-11 2013 Boston, MA 1 Connecting Applications Everywhere with ActiveMQ Rob Davies Technical Director, Fuse Engineering, Red Hat Inc.
  • 2. CamelOne 2013 CamelOne 2 Rob Davies Technical Director, Red Hat - h"p://www.redhat.com ■  Previously CTO of FuseSource - #1 OS vendor for integration and messaging ■  Software projects: ■  Apache ActiveMQ, ■  Apache Camel ■  Apache ServiceMix ■  On  Expert  Group  for  JSR  343:  JMS  2.0   ■  Co-­‐author  of  AcCveMQ  in  AcCon:  
  • 3. CamelOne 2013 CamelOne Why use Message- Oriented Middleware?   Robustness  to  change     Time  Independence     LocaCon  Independence     Hide  Latency     Scalability     Event  driven     Simplicity     Configurable  Quality  of  Service     PlaRorm  and  Language  IntegraCon     Fault  tolerant    
  • 4. CamelOne 2013 CamelOne 4 What is Apache ActiveMQ ? ■ Top Level Apache Software Foundation Project ■ Wildly popular, high performance, reliable message broker ■ Connects to nearly everything ■ Native Java, C/C++, .Net, ■ AMQP 1.0, MQTT 3.1, STOMP (1.0-1.2) and OpenWire ■ STOMP enables Ruby, JS, Perl, Python, PHP, ActionScript … ■ Embedded and standalone deployment options
  • 6. CamelOne 2013 CamelOne Message Channels and Routing •  Message Channels •  Named communication between interested parties •  JMS calls them ‘Destinations’ •  Can “tune-in” to multiple channels using wildcards •  Can fine-tune message consumption with selectors •  Can route a message based on content
  • 7. CamelOne 2013 CamelOne Message Channels = JMS Destinations Producer Broker Consumer Consumer Consumer Destination WIDGET Destination ORDER
  • 8. CamelOne 2013 CamelOne Point-toPoint Channel: JMS Queues Producer Consumer Consumer Consumer Queue
  • 9. CamelOne 2013 CamelOne Publish/Subscribe Channel: JMS Topics Producer Consumer Consumer Consumer Topic
  • 10. CamelOne 2013 CamelOne Message Routing : Selectors DestinationProducer Consumer color='blue' Consumer color='red'
  • 11. CamelOne 2013 CamelOne Message Routing : Destination Wildcards Topic: BAR.BEER Consumer topic:BAR.> Topic: BAR.WINE Producer
  • 13. CamelOne 2013 CamelOne Message Groups Like Parallel Exclusive Consumers ■ Guaranteed ordering of related messages across a Queue ■ But – load balancing of messages across multiple consumers ■ All messages with the same JMSXGroupID go to the same consumer ■ How you group messages is down to the application’s producer ■ To explicitly close a group, set the JMSXGroupSeq to -1 13
  • 14. CamelOne 2013 CamelOne 14 Message Groups code: Message message = session.createTextMessage("<foo>hi from Devoxx</foo>"); message.setStringProperty("JMSXGroupID", ”RHT_NYSE"); producer.send(message); Message message = session.createTextMessage(foobye from Devoxx/foo); message.setStringProperty(JMSXGroupID, ”RHT_NYSE); message.setStringProperty(JMSXGroupSeq, -1); producer.send(message); //Starting a Group … //Close a Group …
  • 15. CamelOne 2013 CamelOne Deploying ActiveMQ ActiveMQ Can run standalone or embedded ■ As a standalone, or part of a highly available message broker cluster ■ Embedded – easy to use an entire broker in JUnit tests (no need to Mock) ■ In Tomcat, deployed as a war ■ In JEE Server – either co-locate – or use client with JCA ■ ActiveMQ distributions contain a rar for this purpose 15
  • 17. CamelOne 2013 CamelOne Message Delivery Mode •  Messages can be persisted – allowing for decoupled applications •  For Queues, any message delivered as PERSISTENT must be stored on long term storage before being delivered to a consumer •  For Topics, a message delivered as PERSISTENT will only be stored if there exists a durable subscriber •  NON-PERSISTENT messages may also be stored on disk if the memory limits of the broker have been reached 17
  • 18. CamelOne 2013 CamelOne Message stores supported by ActiveMQ ■ SQL (JDBC) ■ SQL (JDBC) with journal ■ AMQ Message Store ■ Kaha ■ KahaDB ■ LevelDB 18 Slow but popular Don’t use (deprecated) The “current” default The “best yet”
  • 19. CamelOne 2013 CamelOne LevelDB Store vs KahaDB •  Fewer index entries per message than KahaDB •  Faster recovery when a broker restarts •  LevelDB index out-perform Btree index at sequential access . •  LevelDB indexes support concurrent read access. •  Pauseless data log file garbage collection cycles. •  Fewer IOPS to load stored messages. •  It exposes it's status via JMX for monitoring
  • 22. CamelOne 2013 CamelOne OpenWire Advantages: •  Fast – optimized for ActiveMQ •  client failover •  automatic reconnect •  Client load balancing •  Flow control •  Many advanced features 22 Disadvantages: •  Not a recognized standard •  Only Java, C/C++/.Net http://activemq.apache.org/openwire.html
  • 23. CamelOne 2013 CamelOne MQTT http://mqtt.org Advantages: •  M2M/”Internet of Things” transport •  Proposed as an OASIS standard •  Extremely light weight •  Growing support from vendors and OS products •  WebSphereMQ •  ActiveMQ + Apollo •  Mosquitto •  RabbitMQ 23 Disadvantages: •  3.1 does not support Queues •  Advanced features not standard •  Flow control •  Failover etc.
  • 24. CamelOne 2013 CamelOne AMQP – see www.amqp.org Advantages: •  AMQP 1.0 OASIS standard •  Proposed as an OASIS standard •  Commoditizes the Broker 24 Disadvantages: •  One size doesn’t really fit all •  Currently no plans for IBM or Tibco to adopt it
  • 25. CamelOne 2013 CamelOne STOMP – http://stomp.github.com Advantages: •  Easy to use text based protocol •  Can use telnet as a client •  Defacto standard: •  ActiveMQ + Apollo •  HornetQ •  RabbitMQ •  PocoMQ •  StompServer •  OpenMQ •  Many more … 25 Disadvantages: •  Not as fast as binary formats
  • 26. CamelOne 2013 CamelOne But there’s more: WebSockets STOMP is a natural wire protocol for WebSockets 26 ActiveMQ Client (Browser) WebSocket Connector Stomp Converter ActiveMQ (Backend) TCP (WebSocket) HTTP(S) Request/Response 1. HTTP Request (Upgrade) 2. HTTP Response 4. Message received from Topic 5. Send WebSocket Data 3. Stomp Subscribe
  • 28. CamelOne 2013 CamelOne Command line: •  Activemq •  activemq-admin •  activemq-admin stop •  activemq-admin query •  activemq-admin bstat •  activemq-admin browse •  activemq-admin list 28 Runs the broker Manages the broker
  • 32. CamelOne 2013 CamelOne High Availability ActiveMQ Cluster ActiveMQ Client Supported by both Java and C++ OpenWire clients
  • 34. CamelOne 2013 CamelOne Network of Brokers : Geographically Dispersed
  • 35. CamelOne 2013 CamelOne Network of Brokers : Network with Master/Slave
  • 36. CamelOne 2013 CamelOne Scaling Networks of Brokers •  Brokers share routing information across networks •  All destinations are considered Global •  This is really convenient •  Though it starts to get problematic with 1000’s of brokers •  However – we can do filtering to shape the traffic across networks •  But this involves a lot of manual configuration 36  crikey!   
  • 37. CamelOne 2013 CamelOne •  Brokers share routing information across networks •  All destinations are considered Global •  This is really convenient •  Though it starts to get problematic with 1000’s of brokers •  However – we can do filtering to shape the traffic across networks •  But this involves a lot of manual configuration 37 Time to talk about Apache Camel … Scaling Networks of Brokers
  • 38. CamelOne 2013 CamelOne ActiveMQ with embedded Camel Service Consumer Consumer ActiveMQ Broker Flexible and is faster J
  • 39. CamelOne 2013 CamelOne 39 ActiveMQ with embedded Camel beans    broker brokerName=testBroker  xmlns=http://activemq.apache.org/schema/core     transportConnectors       transportConnector uri=tcp://localhost:61616/     /transportConnectors   /broker   import resource=camel.xml/ /beans Import Camel into ActiveMQ broker config:
  • 40. CamelOne 2013 CamelOne 40 Setup Camel Context in the usual way beans … camelContext id=camel xmlns=http://camel.apache.org/schema/spring route descriptionExample Camel Route/description from uri=activemq:topic:audio/ setHeader headerName=JMS_AMQP_MESSAGE_FORMAT constant0/constant /setHeader to uri=activemq:queue:audio/ /route /camelContext … /beans
  • 41. CamelOne 2013 CamelOne Scaling Networks – use Apache Camel •  Allows for non-chatty networks to be established •  Routing information can be externalized to the broker •  Successfully used in production for 1000’s of brokers today 41
  • 43. CamelOne 2013 CamelOne Problems – Deploying and maintenance •  Main problems •  Installing brokers on multiple hosts •  ssh, untar, set directories and environment •  Setting configuration manually for every broker •  copying xml config, tweaking, testing •  Updating configuration across cluster •  Upgrading brokers It’s a tedious and error-prone process
  • 44. CamelOne 2013 CamelOne Problems – Traditional best- practice tips •  Keep XML as a template and configure node-specific details through properties •  Keep configuration in SVC system (git, svn, ...) •  Keep configuration separate from installation for easier upgrades Deployment with Fuse Fabric moves it to the next level
  • 45. CamelOne 2013 CamelOne Problems - Clients •  Topology is very “static” •  Clients need to be aware of topology •  Clients need to know broker locations •  Changes are not easy as clients need to be updated •  Adding new resources (brokers) requires client updates •  Not suitable for “cloud” deployments Fuse Fabric makes deployments more “elastic”
  • 47. CamelOne 2013 CamelOne Fuse Fabric – Key Features Fuse  IDE     hawCo   ActiveMQ Cluster Camel Endpoints ServiceMix Runtime Registry •  Supports Hybrid deployments •  Distributed Configuration •  Runtime registry •  Centralized Management
  • 48. CamelOne 2013 CamelOne FuseMQ features •  mq-base profile •  Defines OSGi features and bundles to be installed •  Defines basic broker settings •  mq-create command •  Helper command for creating brokers •  Creates an new profile based on mq-base •  Optionally creates new containers •  Assigns the profile to containers (essentially starts the broker) FuseMQ = ActiveMQ deployed in Apache Karaf +
  • 49. CamelOne 2013 CamelOne Why is Integration and Messaging Important ? Head Office Enterprises Need to know Everything!
  • 50. CamelOne 2013 CamelOne There are more things to Integrate with!
  • 51. CamelOne 2013 CamelOne The Internet of Things •  Uniquely identifiable objects and their virtual representations in an internet-like structure •  Originally defined by Kevin Ashton, co-founder of Auto-ID center at MIT •  Today its meaning has evolved to encompass a world where physical objects are integrated into the information network, and where physical objects participate in business processes. 51
  • 52. CamelOne 2013 CamelOne Machine to Machine •  M2M involves collection and transmission of event level data (used to be called telemetry) from intelligent devices •  Machines can interact over the net – and/or attached networks – by wired and wireless networks •  Payloads are typically minimal (temperature, pressure, location, metering etc.) 52
  • 53. CamelOne 2013 CamelOne Internet of Things Time   Connected  Devices  on  the   internet   2010  2000   2020   1  Billion   50  Billion   10    Billion   Ubiquitous   posiConing  –   locaCng  people  and   everyday  objects     RFID  tags  for   Inventory  control   Advanced  sensors,   Enterprises  fully   connected:  integraCon   of  everything   Geo-­‐located  devices   Microcontrollers   internet  enabled   Vending  machines,  lone   workers,  POS,  vehicles,   planes,  tolls,  power   systems,  transport,   telemedicine,    home   appliances,  power   systems,  etc.  
  • 54. CamelOne 2013 CamelOne M2M Examples •  Smart Energy – Smart Grid uses smart meters for monitoring energy uses by premises for billing, substation and transmission line monitoring, energy production (renewables) •  Inventory Control – smart labels and RFID tags – connected scanners pass information upstream to servers for monitoring •  In-Vehicle Systems Maintenance information, global positioning, ‘black-box’ (speed and driving habits), wireless payments for tolls/gas •  Environmental Monitoring Weather stations (temperature, air-pressure), ocean monitors, earth movements, volcanic activity crop yields etc. •  Livestock monitoring Cow herds, monitored for optimum time for milking, sheep herds for location 54
  • 56. CamelOne 2013 CamelOne Power Consumption! •  Battery life for mobiles, power consumption for smart devices is an important consideration. •  Facebook use MQTT for real-time updates – efficiency was one of the things considered •  MQTT is more efficient at establishing connections, sends information more reliably, and consumes less power to transmit data than HTTP. 56
  • 57. CamelOne 2013 CamelOne Deluge of Data •  Billions of devices send information will require storage and processing of terabytes or even petabytes of data. •  Big Data Ingestion: Processing of vast amounts of data business generates to make good decisions is only half the problem. Ingesting that data from all areas of the enterprise will require TBs of data to be ingested in highly reliable and scalable way. 57
  • 58. CamelOne 2013 CamelOne Need an Eco system of technologies Dev •  Integration is getting harder •  Traditional message brokers are key to connect “everything” •  Multiple protocols need to be supported •  Camel can provide integration at the edges – and the data center •  Technologies like Fuse Fabric provide centralized provisioning and management •  Need to mix protocols, brokers and “message routers” to scale FuseMQ Clusters Arrival Airport 1
  • 60. CamelOne 2013 CamelOne Messaging through the Internet of Things ActiveMQ AMQP/MQTT routers AMQP/MQTT routers AMQP/MQTT routers MQTT   MQTT-­‐S   AMQP   AMQP   AMQP   MQTT   MQTT   websockets  
  • 61. CamelOne 2013 CamelOne Simplified demo Java MQTT Client AMQP   MQTT   ActiveMQ MQTT/AMQP Gateway ActiveMQ AMQP/OpenWire Broker JMS OpenWire Client
  • 62. CamelOne 2013 CamelOne What is Arduino ? •  Open Source Hardware microcontroller •  Cheap and easily available. •  Open Source Software. •  Widespread: many projects. •  Extra HW (shields) available (e.g. WiFi shield)
  • 63. CamelOne 2013 CamelOne 63   USB 7-12 v 3 v GRD 5 v Analog Input Pins Digital Input/Output Pins Pins with ~ are PWM [Analog Output] GRD Transmitter/Receiver Serial Connection Microcontroller ATmega328 OperatingVoltage 5V InputVoltage (recommended)7-12V InputVoltage (limits)6-20V Digital I/O Pins 14 (of which 6 provide PWM output) Analog Input Pins 6 DC Current per I/O Pin 40 mA DC Current for 3.3V Pin 50 mA
  • 64. CamelOne 2013 CamelOne Arduino Programming •  3 types of memory on Arduino •  Flash memory (program space) – 32 Kb •  SRAM – used by sketches – 2 Kb •  EPROM – long term memory – 1 Kb •  Programming language based on Wiring: C/C++ library designed to make input/output easier. Programs are called sketches. •  Arduino has a simple IDE, available on Windows, Linux and Mac
  • 65. CamelOne 2013 CamelOne Arduino MQTT to WebSockets Arduino AMQP   MQTT   ActiveMQ MQTT/AMQP Gateway ActiveMQ AMQP/WebSockets Broker HTML 5/WebSockets
  • 66. CamelOne 2013 CamelOne Useful Resources: •  http://activemq.apache.org •  http://camel.apache.org •  http://fuse.fusesource.org/fabric/docs/overview.html •  http://fuse.fusesource.org/mq/docs/mq-fabric.html •  https://github.com/fusesource/fuseide •  http://hawt.io •  http://www.arduino.cc/ Messaging and Integration Developer tooling Management Configuration and provisioning Arduino