SlideShare a Scribd company logo
Messaging for the Cloud and
Microservices
Rob Davies
2015
RED HAT | Fabric8 Rocks!2
Rob Davies
• Director of Middleware Engineering
for xPaaS
• Over 20 years experience of
developing large scale solutions for
telcos and finance
• Creator of ActiveMQ and ServiceMix
• Committer on open source projects,
including fabric8, Apache Camel and
other stuff …
RED HAT | Fabric8 Rocks!3
All singing, all dancing scalable
messaging for the cloud
AND …
Messaging for Microservices
RED HAT | Fabric8 Rocks!4
Why do we use messaging ?
• Robustness to change
• Time independence
• Hide latency
• Event driven
• Platform and language
independence
Broker
Message in
Message out after
enrichment by Process B
Process C
Process B
Process A
Queue:Foo
Queue:Bar
RED HAT | Fabric8 Rocks!5
Traditional Enterprise Message brokers
• Designed to support
many different
messaging patterns
• highly available
• Support clustering
• Support store and
forward
• But – are usually
very static in nature
RED HAT | Fabric8 Rocks!6
Core Messaging Patterns …
RED HAT | Fabric8 Rocks!7
Requestor
Core Message Pattern: Request/Reply
Servic
e
RED HAT | Fabric8 Rocks!8
Producer
Core Message Pattern: Queue
Consumer
Consumer
Consumer
RED HAT | Fabric8 Rocks!9
Core Message Pattern: Publish/Subscribe
Consumer
Consumer
Consumer
Producer
RED HAT | Fabric8 Rocks!10
Message Channels and Filters
RED HAT | Fabric8 Rocks!11
Message Routing: Selectors
Producer Destination
Consumer
Color = red
Consumer
Color =
blue
RED HAT | Fabric8 Rocks!12
Message Routing: Destination Wildcards
• * matches a subject
• > matches sub-tree
Topic:
BAR.BEER.WHITE
Topic:
BAR.WINE.WHITE
Producer
Consumer
Topic:BAR.WINE.WHITE
Consumer
Topic:BAR.BEER.WHITE
Consumer
Topic:BAR.*.WHITE
Consumer
Topic:BAR.>
RED HAT | Fabric8 Rocks!13
Message Groups
Producer
Consumer
Consumer
Consumer
Queue:Prices
Message message = session.createTextMessage(“Hi DWP”);
message.setStringProperty("JMSXGroupID", ”JavaRocks");
producer.send(message);
RED HAT | Fabric8 Rocks!14
Scaling Messaging –
the traditional way …
RED HAT | Fabric8 Rocks!15
Client Scaling:
Message Bus
RED HAT | Fabric8 Rocks!16
Client Scaling:
Message Bus
RED HAT | Fabric8 Rocks!17
Broker Scaling:
Message BusMessage
throughput
requirement exceeds
broker capacity
RED HAT | Fabric8 Rocks!18
Broker Scaling:
Message Bus Message Bus
RED HAT | Fabric8 Rocks!19
Broker Scaling:
Message Bus Message Bus
RED HAT | Fabric8 Rocks!20
Broker Scaling:
Message Bus Message Bus
Message BusMessage Bus
RED HAT | Fabric8 Rocks!21
Broker Scaling: Problems
Message Bus Message Bus
Message BusMessage Bus
• Diminished
returns
• Focused
Overload
• Stranded
Capacity
RED HAT | Fabric8 Rocks!22
How do we scale Messaging for the
Cloud ?
RED HAT | Fabric8 Rocks!23
Requirements for Messaging as a Service
• Needs to support many thousands of clients
• Flexible, brokers need to be spun up and down, based on demand
• Client connections may need to be multiplexed, to decrease the
load on individual message brokers
• Popular messaging protocols support
• Flexible routing needs to be supported
RED HAT | Fabric8 Rocks!24
What contenders are already out
there ?
RED HAT | Fabric8 Rocks!25
ActiveMQ
HornetQ
RabbitMQ
Proprietary Enterprise Messaging
RED HAT | Fabric8 Rocks!26
Apache Kafka
• Publish/Subscribe messaging – rethought as a distributed
commit log
• Designed for fast data ingestion of logs
• Scalable – designed to allow a single cluster to act as a
messaging platform, allowing for elastic expansion with no
downtime
• Messages are persisted to disk, and replicated to prevent
data loss
• Allows partitioning of data streams across cluster of
machines
• Created at Linkedin – donated to the ASF
RED HAT | Fabric8 Rocks!27
Apache Kafka Architecture
ZooKeeper BrokerBrokerBroker Broker
Producer Producer
Consumer Consumer
RED HAT | Fabric8 Rocks!28
Apache Kafka Performance
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+papers+and+presentations
From: Kafka: A distributed Messaging System for log processing, Jun Rao
RED HAT | Fabric8 Rocks!29
Apache Kafka – Differences with a Message
Broker
• Distributed commit log – broker maintains no state
• Niche – so works really well for a particular set of use
cases
• Proprietary
• Written in Scala
• Consumers have to maintain state
RED HAT | Fabric8 Rocks!30
Kubernetes Helps
RED HAT | Fabric8 Rocks!31
Fabric8 MQ – not a message broker – but a
scalable messaging system
Many concurrent
connections, one out
Flexible
Protocols
Multiplex
Connections
Vert.x
Core
Embedded Camel,
Integration with APIMan
OpenWire,
STOMP
MQTT
AMQP
WebSockets – all done
asynchronously
Scaling Connections
NOT a problem
Destination
Sharding
RED HAT | Fabric8 Rocks!32
Fabric8 MQ Independently scalable:
Node
Pod
ActiveMQ
Broker
AMQ
Replication
Controller
Node
Pod
ActiveMQ
Broker
Node
Pod
ActiveMQ
Broker
Fabric8MQ
Replication
Controller
Vert.x
Vert.x
Vert.x
Multiplexer
Multiplexer
Multiplexer
Fabric8MQ
Vert.x
Vert.x
Vert.x
Multiplexer
Multiplexer
Multiplexer
Fabric8MQ
Vert.x
Vert.x
Vert.x
Multiplexer
Multiplexer
Multiplexer
Fabric8MQ
RED HAT | Fabric8 Rocks!33
Fabric8 MQ Message Flow:
Protocol
Conversion
Camel
Routing
API
Management Multiplexer
Destination
Sharding
Broker
Control
RED HAT | Fabric8 Rocks!34
Qpid Dispatch Router
BrokerBrokerBroker Broker
Producer ProducerConsumer Consumer
Router Router Router Router
AMQP
1.0
RED HAT | Fabric8 Rocks!35
Multiplexing
• Brokers performs better the lower
the number of connections – less
contention
• IoT applications have long lived
connections, but small amount of
traffic
• All configurable – you can decide
how fine or coarse grained you want
multiplexing
• Dispatch Router does this
automatically
RED HAT | Fabric8 Rocks!36
Destination Sharding: Benefits
• There is an overhead associated with a
Destination – restrict the number of
Destinations per Broker to improve
performance
• Co-locate producers and consumers of a
Destination to the same broker reduces
latency and improves overall performance
• Increased scalability for your messaging
solution
• Dispatch Router does this automatically
RED HAT | Fabric8 Rocks!37
Red Hat Messaging – how we plan
to tackle messaging for the cloud
…
RED HAT | Fabric8 Rocks!38
What we have today
 Separate clients tied to
broker- specific protocols
 Limited
integration between brokers
& overlapping capabilities
MRG-M (Apache Qpid C++ broker)
•AMQP, high performance, routing, HA
•No longer sold but actively supported
M. MQ 6.x (Apache ActiveMQ 5.x Java
broker)
• Multi-protocol JMS-oriented broker
• Large user community, rich feature set
EAP HornetQ JMS Messaging Broker (HornetQ GitHub
project)
•Multi-protocol JMS-oriented broker
•JMS 2.0, best-in-class SpecJMS performance
MRG-M
3.1
A-MQ
6.x
HornetQ
EAP6
RED HAT | Fabric8 Rocks!39
Clients
A-MQ
Where we’re going
• Consolidate to a single messaging product, known
as A-MQ
• Consists of three components: Broker,
Interconnect & Clients
• Developed in open, community-based, upstream
projects and
leveraging open, standards-based protocols
Broker
Interconnect
RED HAT | Fabric8 Rocks!40
Where we’re going
M. MQ Broker
• Full-featured, high-performance, multi-protocol
enterprise broker
• HA through replication and failover
M. MQ Interconnect Router
• Large-scale, secure, reliable, and manageable
messaging networks
• Use with or without broker. HA through redundant
routing.
M. MQ Clients
• Ubiquitous, standards-based messaging clients for all
common platforms and programming languages
A-
MQ
A-MQ
Broker
Interconnect
Clients
RED HAT | Fabric8 Rocks!41
Where we’re going
• AMQP (Advanced Message Queuing
Protocol)
• Rich semantics, multiplexing, flow control,
extensible
• International standard – ISO/IEC ISO
19464
• MQTT (Message Queuing Telemetry
Transport)
• Lightweight “first mile” telemetry
• OASIS Standard; International
standardization in progress
• STOMP (Simple Text-Oriented
Messaging Protocol)
• WebSocket encapsulation
A-MQ
Broker
Interconnect
Clients
RED HAT | Fabric8 Rocks!42
Messaging for Microservices
RED HAT | Fabric8 Rocks!43
Reliable, Fast Communication between Services
RED HAT | Fabric8 Rocks!44
Functional Decomposition
RED HAT | Fabric8 Rocks!45
Micromessaging
• Whilst external services should
often be http – internal services
do not need to be.
• Using a messaging system can
improve performance and
scalability
• Standards are important –
immutable infrastructure leads to
disposable infrastructure. Apply
that all assets in your design.
RED HAT | Fabric8 Rocks!46
Micromessaging: inter-service communications
Broker
Service A
Service A
Service A
Service C
Service A
Service B
Service A
Service F
Service A
Service E
Service A
Service Drequest
reply
subscribe
subscribe
publishpublish
RED HAT | Fabric8 Rocks!47
Micromessaging: Control Plane
BrokerController
Service A
Service F
Service A
Service A
subscribe
subscribe
publish
{Start Processing}
{Stop Processing}
RED HAT | Fabric8 Rocks!48
Micromessaging: Stream Processing
Broker
publish
Event Listener
SMS
Event Listener
Event Listener
HTTP Post
Event Listener
HTTP Post
Event Listener
HTTP Post
Event Listener
HTTP Post
Event Listener
HTTP Post
SMTP
publish
publish
Event
Processing
Engine
RED HAT | Fabric8 Rocks!49
Micromessaging anti-patterns
• Any pattern that is transactional in nature
e.g. Transactional Client
• Any pattern that relies on Message Persistence
Durable Subscriber, Guaranteed Delivery
• Any pattern where the message system inspects, or
selectively routes messages
Message Filter, Content Based Routing, Content Enricher
RED HAT | Fabric8 Rocks!50
Micromessaging: what to use ?
Qpid Dispatch
Router
RED HAT | Fabric8 Rocks!51
RED HAT | Fabric8 Rocks!52
Demo:
Variance
Collector
Compare Interprocess
communication:
HTTP vs Messaging
RED HAT | Fabric8 Rocks!53
Standard Deviation Processor:
public void process(Exchange exchange) throws Exception {
String message = exchange.getIn().getBody(String.class);
ObjectMapper objectMapper = new ObjectMapper();
TypeFactory typeFactory = objectMapper.getTypeFactory();
List<Double> values = objectMapper.readValue(message,
typeFactory.constructCollectionType(List.class, Double.class));
SummaryStatistics summaryStatistics = new SummaryStatistics();
List<Double> list = new ObjectMapper().readValue(message, List.class);
for (Double value : list) {
summaryStatistics.addValue(value);
}
String stdDev = Double.toString(summaryStatistics.getStandardDeviation());
exchange.getOut().setBody(stdDev);
}
RED HAT | Fabric8 Rocks!54
Standard Deviation Route:
@ContextName("stddevCamel")
public class StdDevHTTP extends RouteBuilder {
@Inject
StdDevProcessor processor;
@Override
public void configure() throws Exception {
from("jetty:http://0.0.0.0:8183/std-dev").doTry()
.process(processor)
.doCatch(Throwable.class)
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500))
.setBody(constant("{"error" : "Service failed"}"))
.end();
}
}
RED HAT | Fabric8 Rocks!55
HTTP Calculator
@Override
public void configure() throws Exception {
onException(Throwable.class).maximumRedeliveries(-1).delay(5000);
from("direct:start")
.multicast()
.parallelProcessing().timeout(10000).to(stdDevService,
varianceService)
.end().setHeader("name", constant("HTTP")).to(collectorService);
}
RED HAT | Fabric8 Rocks!56
HTTP Calculator
@Inject
@Uri("netty4-http:http://{{service:collector-http:localhost:8184}}/results/http")
private Endpoint collectorService;
@Inject
@Uri("netty4-http:http://{{service:variance-http:localhost:8182}}/variance")
private Endpoint varianceService;
@Inject
@Uri("netty4-http:http://{{service:std-dev-http:localhost:8183}}/std-dev")
private Endpoint stdDevService
RED HAT | Fabric8 Rocks!57
Messaging Calculator
Endpoint jmsSender = getContext().getEndpoint("jms:topic:"
+ CALCULATION_TOPIC
+ "?preserveMessageQos=true"
+ "&replyTo=" + RESULT_QUEUE
+"&replyToType=Exclusive"
+ "&asyncConsumer=true"
+ "&asyncStartListener=true"
+ "&concurrentConsumers=10");
RED HAT | Fabric8 Rocks!58
Messaging Calculator
from("jms:queue:”+RESULT_QUEUE).aggregate(header(CORRELATION_HEADER),
new AggregationStrategy() {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (oldExchange == null) {
return newExchange;
}
String oldBody = oldExchange.getIn().getBody(String.class);
String newBody = newExchange.getIn().getBody(String.class);
oldExchange.getIn().setBody(oldBody + "+" + newBody);
return oldExchange;
}
}).completionSize(NUMBER_OF_SERVICES).completionTimeout(2000)
.setHeader("name", constant("MSG")).to(collectorService);
RED HAT | Fabric8 Rocks!59
The Collector:
@ContextName("collectorCamel")
public class CollectorHTTP extends RouteBuilder {
@Override
public void configure() throws Exception {
getContext().addRoutePolicyFactory(new MetricsRoutePolicyFactory());
from("jetty:http://0.0.0.0:8184/results/http”).setId("HTTP");
from("jetty:http://0.0.0.0:8184/results/msg”).setId("MSG");
}
}
RED HAT | Fabric8 Rocks!60
Links:Links:
http://camel.apache.orghttp://camel.apache.org
http://fabric8.iohttp://fabric8.io
https://github.com/rajdavies/microservices-exampleshttps://github.com/rajdavies/microservices-examples

More Related Content

What's hot

Protecting your data at rest with Apache Kafka by Confluent and Vormetric
Protecting your data at rest with Apache Kafka by Confluent and VormetricProtecting your data at rest with Apache Kafka by Confluent and Vormetric
Protecting your data at rest with Apache Kafka by Confluent and Vormetric
confluent
 
Microservices with Node and Docker
Microservices with Node and DockerMicroservices with Node and Docker
Microservices with Node and Docker
Tony Pujals
 
Jelastic - Containers Live Migration Behind the Scene
Jelastic - Containers Live Migration Behind the SceneJelastic - Containers Live Migration Behind the Scene
Jelastic - Containers Live Migration Behind the Scene
Jelastic Multi-Cloud PaaS
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
Bruno Pedro
 
Load Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native ArchitectureLoad Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native Architecture
Chiradeep Vittal
 
Microservices: State of the Union
Microservices: State of the UnionMicroservices: State of the Union
Microservices: State of the Union
C4Media
 
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker ContainersKafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
confluent
 
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic Multi-Cloud PaaS
 
Devoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with KafkaDevoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with Kafka
László-Róbert Albert
 
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache KafkaBuilding Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
Guozhang Wang
 
Jelastic DevOps VPC and Hybrid Cloud
Jelastic DevOps VPC and Hybrid CloudJelastic DevOps VPC and Hybrid Cloud
Jelastic DevOps VPC and Hybrid Cloud
Jelastic Multi-Cloud PaaS
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
Achim Nierbeck
 
Essential Camel Components
Essential Camel ComponentsEssential Camel Components
Essential Camel Components
Christian Posta
 
Fundamentals of Apache Kafka
Fundamentals of Apache KafkaFundamentals of Apache Kafka
Fundamentals of Apache Kafka
Chhavi Parasher
 
NFV Orchestration for Optimal Performance
NFV Orchestration for Optimal PerformanceNFV Orchestration for Optimal Performance
NFV Orchestration for Optimal Performance
dfilppi
 
Microservices with Node.js and Apache Cassandra
Microservices with Node.js and Apache CassandraMicroservices with Node.js and Apache Cassandra
Microservices with Node.js and Apache Cassandra
Jorge Bay Gondra
 
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Developing Enterprise Applications for the Cloud,from Monolith to MicroservicesDeveloping Enterprise Applications for the Cloud,from Monolith to Microservices
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
David Currie
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
Jeff Holoman
 
WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh?
Anton Weiss
 
RedisConf17 - Explosion of Data at the Edge in Equinix
RedisConf17 - Explosion of Data at the Edge in EquinixRedisConf17 - Explosion of Data at the Edge in Equinix
RedisConf17 - Explosion of Data at the Edge in Equinix
Redis Labs
 

What's hot (20)

Protecting your data at rest with Apache Kafka by Confluent and Vormetric
Protecting your data at rest with Apache Kafka by Confluent and VormetricProtecting your data at rest with Apache Kafka by Confluent and Vormetric
Protecting your data at rest with Apache Kafka by Confluent and Vormetric
 
Microservices with Node and Docker
Microservices with Node and DockerMicroservices with Node and Docker
Microservices with Node and Docker
 
Jelastic - Containers Live Migration Behind the Scene
Jelastic - Containers Live Migration Behind the SceneJelastic - Containers Live Migration Behind the Scene
Jelastic - Containers Live Migration Behind the Scene
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 
Load Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native ArchitectureLoad Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native Architecture
 
Microservices: State of the Union
Microservices: State of the UnionMicroservices: State of the Union
Microservices: State of the Union
 
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker ContainersKafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
 
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
 
Devoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with KafkaDevoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with Kafka
 
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache KafkaBuilding Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
 
Jelastic DevOps VPC and Hybrid Cloud
Jelastic DevOps VPC and Hybrid CloudJelastic DevOps VPC and Hybrid Cloud
Jelastic DevOps VPC and Hybrid Cloud
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
 
Essential Camel Components
Essential Camel ComponentsEssential Camel Components
Essential Camel Components
 
Fundamentals of Apache Kafka
Fundamentals of Apache KafkaFundamentals of Apache Kafka
Fundamentals of Apache Kafka
 
NFV Orchestration for Optimal Performance
NFV Orchestration for Optimal PerformanceNFV Orchestration for Optimal Performance
NFV Orchestration for Optimal Performance
 
Microservices with Node.js and Apache Cassandra
Microservices with Node.js and Apache CassandraMicroservices with Node.js and Apache Cassandra
Microservices with Node.js and Apache Cassandra
 
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
Developing Enterprise Applications for the Cloud,from Monolith to MicroservicesDeveloping Enterprise Applications for the Cloud,from Monolith to Microservices
Developing Enterprise Applications for the Cloud, from Monolith to Microservices
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh?
 
RedisConf17 - Explosion of Data at the Edge in Equinix
RedisConf17 - Explosion of Data at the Edge in EquinixRedisConf17 - Explosion of Data at the Edge in Equinix
RedisConf17 - Explosion of Data at the Edge in Equinix
 

Viewers also liked

REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
Eberhard Wolff
 
StormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, DublinStormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, Dublin
StormMQ
 
Cloud Computing - Everything you wanted to know!
Cloud Computing - Everything you wanted to know!Cloud Computing - Everything you wanted to know!
Cloud Computing - Everything you wanted to know!
Debasish Patra
 
Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
Dennis van der Stelt
 
C* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris Wolf
C* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris WolfC* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris Wolf
C* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris Wolf
DataStax Academy
 
Introduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users GroupIntroduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users Group
Roy Russo
 
Open Source Versions of Amazon's SNS and SQS.pptx
Open Source Versions of Amazon's SNS and SQS.pptxOpen Source Versions of Amazon's SNS and SQS.pptx
Open Source Versions of Amazon's SNS and SQS.pptx
OpenStack Foundation
 
IPaaS: Cloud Integration Analysis
IPaaS: Cloud Integration AnalysisIPaaS: Cloud Integration Analysis
IPaaS: Cloud Integration AnalysisJesus Rodriguez
 
Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the Cloud
Rob Davies
 
Cassandra Community Webinar: CMB - An Open Message Bus for the Cloud
Cassandra Community Webinar: CMB - An Open Message Bus for the CloudCassandra Community Webinar: CMB - An Open Message Bus for the Cloud
Cassandra Community Webinar: CMB - An Open Message Bus for the Cloud
DataStax
 
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
Red Hat Developers
 
Summer School 2013 - What is iPaaS and why it is important
Summer School 2013 - What is iPaaS and why it is importantSummer School 2013 - What is iPaaS and why it is important
Summer School 2013 - What is iPaaS and why it is important
WSO2
 
iPaas with Fuse Fabric Technology
iPaas with Fuse Fabric TechnologyiPaas with Fuse Fabric Technology
iPaas with Fuse Fabric Technology
Charles Moulliard
 
Continuous Integration with Amazon ECS and Docker
Continuous Integration with Amazon ECS and DockerContinuous Integration with Amazon ECS and Docker
Continuous Integration with Amazon ECS and Docker
Amazon Web Services
 
The art of infrastructure elasticity
The art of infrastructure elasticityThe art of infrastructure elasticity
The art of infrastructure elasticity
Harish Ganesan
 
"Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec...
"Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec..."Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec...
"Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec...
New Relic
 
MuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration ArchitectureMuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration Architecture
Kim Clark
 
Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...
Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...
Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...
SnapLogic
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and MicroservicesNATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices
Apcera
 
Developing real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and KafkaDeveloping real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and Kafka
marius_bogoevici
 

Viewers also liked (20)

REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
 
StormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, DublinStormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, Dublin
 
Cloud Computing - Everything you wanted to know!
Cloud Computing - Everything you wanted to know!Cloud Computing - Everything you wanted to know!
Cloud Computing - Everything you wanted to know!
 
Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
 
C* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris Wolf
C* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris WolfC* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris Wolf
C* Summit 2013: CMB: An Open Message Bus for the Cloud by Boris Wolf
 
Introduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users GroupIntroduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users Group
 
Open Source Versions of Amazon's SNS and SQS.pptx
Open Source Versions of Amazon's SNS and SQS.pptxOpen Source Versions of Amazon's SNS and SQS.pptx
Open Source Versions of Amazon's SNS and SQS.pptx
 
IPaaS: Cloud Integration Analysis
IPaaS: Cloud Integration AnalysisIPaaS: Cloud Integration Analysis
IPaaS: Cloud Integration Analysis
 
Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the Cloud
 
Cassandra Community Webinar: CMB - An Open Message Bus for the Cloud
Cassandra Community Webinar: CMB - An Open Message Bus for the CloudCassandra Community Webinar: CMB - An Open Message Bus for the Cloud
Cassandra Community Webinar: CMB - An Open Message Bus for the Cloud
 
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
 
Summer School 2013 - What is iPaaS and why it is important
Summer School 2013 - What is iPaaS and why it is importantSummer School 2013 - What is iPaaS and why it is important
Summer School 2013 - What is iPaaS and why it is important
 
iPaas with Fuse Fabric Technology
iPaas with Fuse Fabric TechnologyiPaas with Fuse Fabric Technology
iPaas with Fuse Fabric Technology
 
Continuous Integration with Amazon ECS and Docker
Continuous Integration with Amazon ECS and DockerContinuous Integration with Amazon ECS and Docker
Continuous Integration with Amazon ECS and Docker
 
The art of infrastructure elasticity
The art of infrastructure elasticityThe art of infrastructure elasticity
The art of infrastructure elasticity
 
"Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec...
"Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec..."Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec...
"Containers, DevOps, Microservices and Kafka: Tools used by our Monolith wrec...
 
MuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration ArchitectureMuCon 2015 - Microservices in Integration Architecture
MuCon 2015 - Microservices in Integration Architecture
 
Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...
Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...
Webinar: iPaaS in the Enterprise - What to Look for in a Cloud Integration Pl...
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and MicroservicesNATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices
 
Developing real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and KafkaDeveloping real-time data pipelines with Spring and Kafka
Developing real-time data pipelines with Spring and Kafka
 

Similar to Messaging For the Cloud and Microservices

Velocity Conference '13: Asynchronous messaging for performance optimization,...
Velocity Conference '13: Asynchronous messaging for performance optimization,...Velocity Conference '13: Asynchronous messaging for performance optimization,...
Velocity Conference '13: Asynchronous messaging for performance optimization,...
Al Sargent
 
Picking a message queue
Picking a  message queuePicking a  message queue
Picking a message queue
Vladislav Kirshtein
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
dejanb
 
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTTHiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
Dominik Obermaier
 
Lightweight and Scalable IoT Messaging with MQTT
Lightweight and Scalable IoT Messaging with MQTTLightweight and Scalable IoT Messaging with MQTT
Lightweight and Scalable IoT Messaging with MQTT
HiveMQ
 
A pure Java MQTT Stack for IoT
A pure Java MQTT Stack for IoTA pure Java MQTT Stack for IoT
A pure Java MQTT Stack for IoT
Dominik Obermaier
 
Introduction MQTT in English
Introduction MQTT in EnglishIntroduction MQTT in English
Introduction MQTT in English
Eric Xiao
 
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK
 
IBM Messaging in the Cloud
IBM Messaging in the CloudIBM Messaging in the Cloud
IBM Messaging in the Cloud
matthew1001
 
WSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
WSO2Con USA 2015: An Introduction to the WSO2 Integration PlatformWSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
WSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
WSO2
 
What is RabbitMQ ?
What is RabbitMQ ?What is RabbitMQ ?
What is RabbitMQ ?
AIMDek Technologies
 
CloudStack Overview
CloudStack OverviewCloudStack Overview
CloudStack Overview
sedukull
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
Virtual JBoss User Group
 
Vsat day-2008-idirect
Vsat day-2008-idirectVsat day-2008-idirect
Vsat day-2008-idirect
SSPI Brasil
 
Kafka talk
Kafka talkKafka talk
Kafka talk
Maheedhar Gunturu
 
RabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client libraryRabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client library
Mohammed Shaban
 
Integrating Unified Communications and Collaboration on an Aruba Access Network
Integrating Unified Communications and Collaboration on an Aruba Access NetworkIntegrating Unified Communications and Collaboration on an Aruba Access Network
Integrating Unified Communications and Collaboration on an Aruba Access Network
Aruba, a Hewlett Packard Enterprise company
 
CoLab session 1 deployment best practices and architecture
CoLab session 1   deployment best practices and architectureCoLab session 1   deployment best practices and architecture
CoLab session 1 deployment best practices and architecture
Christina Inge
 
Multicast QUIC for video content delivery
Multicast QUIC for video content deliveryMulticast QUIC for video content delivery
Multicast QUIC for video content delivery
Jisc
 
Building Scalable & Reliable MQTT Clients for Enterprise Computing
Building Scalable & Reliable MQTT Clients for Enterprise ComputingBuilding Scalable & Reliable MQTT Clients for Enterprise Computing
Building Scalable & Reliable MQTT Clients for Enterprise Computing
HiveMQ
 

Similar to Messaging For the Cloud and Microservices (20)

Velocity Conference '13: Asynchronous messaging for performance optimization,...
Velocity Conference '13: Asynchronous messaging for performance optimization,...Velocity Conference '13: Asynchronous messaging for performance optimization,...
Velocity Conference '13: Asynchronous messaging for performance optimization,...
 
Picking a message queue
Picking a  message queuePicking a  message queue
Picking a message queue
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
 
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTTHiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
HiveMQ Webinar: Lightweight and scalable IoT Messaging with MQTT
 
Lightweight and Scalable IoT Messaging with MQTT
Lightweight and Scalable IoT Messaging with MQTTLightweight and Scalable IoT Messaging with MQTT
Lightweight and Scalable IoT Messaging with MQTT
 
A pure Java MQTT Stack for IoT
A pure Java MQTT Stack for IoTA pure Java MQTT Stack for IoT
A pure Java MQTT Stack for IoT
 
Introduction MQTT in English
Introduction MQTT in EnglishIntroduction MQTT in English
Introduction MQTT in English
 
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
 
IBM Messaging in the Cloud
IBM Messaging in the CloudIBM Messaging in the Cloud
IBM Messaging in the Cloud
 
WSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
WSO2Con USA 2015: An Introduction to the WSO2 Integration PlatformWSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
WSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
 
What is RabbitMQ ?
What is RabbitMQ ?What is RabbitMQ ?
What is RabbitMQ ?
 
CloudStack Overview
CloudStack OverviewCloudStack Overview
CloudStack Overview
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
 
Vsat day-2008-idirect
Vsat day-2008-idirectVsat day-2008-idirect
Vsat day-2008-idirect
 
Kafka talk
Kafka talkKafka talk
Kafka talk
 
RabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client libraryRabbitMQ and AMQP with .net client library
RabbitMQ and AMQP with .net client library
 
Integrating Unified Communications and Collaboration on an Aruba Access Network
Integrating Unified Communications and Collaboration on an Aruba Access NetworkIntegrating Unified Communications and Collaboration on an Aruba Access Network
Integrating Unified Communications and Collaboration on an Aruba Access Network
 
CoLab session 1 deployment best practices and architecture
CoLab session 1   deployment best practices and architectureCoLab session 1   deployment best practices and architecture
CoLab session 1 deployment best practices and architecture
 
Multicast QUIC for video content delivery
Multicast QUIC for video content deliveryMulticast QUIC for video content delivery
Multicast QUIC for video content delivery
 
Building Scalable & Reliable MQTT Clients for Enterprise Computing
Building Scalable & Reliable MQTT Clients for Enterprise ComputingBuilding Scalable & Reliable MQTT Clients for Enterprise Computing
Building Scalable & Reliable MQTT Clients for Enterprise Computing
 

Recently uploaded

Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 

Recently uploaded (20)

Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 

Messaging For the Cloud and Microservices

  • 1. Messaging for the Cloud and Microservices Rob Davies 2015
  • 2. RED HAT | Fabric8 Rocks!2 Rob Davies • Director of Middleware Engineering for xPaaS • Over 20 years experience of developing large scale solutions for telcos and finance • Creator of ActiveMQ and ServiceMix • Committer on open source projects, including fabric8, Apache Camel and other stuff …
  • 3. RED HAT | Fabric8 Rocks!3 All singing, all dancing scalable messaging for the cloud AND … Messaging for Microservices
  • 4. RED HAT | Fabric8 Rocks!4 Why do we use messaging ? • Robustness to change • Time independence • Hide latency • Event driven • Platform and language independence Broker Message in Message out after enrichment by Process B Process C Process B Process A Queue:Foo Queue:Bar
  • 5. RED HAT | Fabric8 Rocks!5 Traditional Enterprise Message brokers • Designed to support many different messaging patterns • highly available • Support clustering • Support store and forward • But – are usually very static in nature
  • 6. RED HAT | Fabric8 Rocks!6 Core Messaging Patterns …
  • 7. RED HAT | Fabric8 Rocks!7 Requestor Core Message Pattern: Request/Reply Servic e
  • 8. RED HAT | Fabric8 Rocks!8 Producer Core Message Pattern: Queue Consumer Consumer Consumer
  • 9. RED HAT | Fabric8 Rocks!9 Core Message Pattern: Publish/Subscribe Consumer Consumer Consumer Producer
  • 10. RED HAT | Fabric8 Rocks!10 Message Channels and Filters
  • 11. RED HAT | Fabric8 Rocks!11 Message Routing: Selectors Producer Destination Consumer Color = red Consumer Color = blue
  • 12. RED HAT | Fabric8 Rocks!12 Message Routing: Destination Wildcards • * matches a subject • > matches sub-tree Topic: BAR.BEER.WHITE Topic: BAR.WINE.WHITE Producer Consumer Topic:BAR.WINE.WHITE Consumer Topic:BAR.BEER.WHITE Consumer Topic:BAR.*.WHITE Consumer Topic:BAR.>
  • 13. RED HAT | Fabric8 Rocks!13 Message Groups Producer Consumer Consumer Consumer Queue:Prices Message message = session.createTextMessage(“Hi DWP”); message.setStringProperty("JMSXGroupID", ”JavaRocks"); producer.send(message);
  • 14. RED HAT | Fabric8 Rocks!14 Scaling Messaging – the traditional way …
  • 15. RED HAT | Fabric8 Rocks!15 Client Scaling: Message Bus
  • 16. RED HAT | Fabric8 Rocks!16 Client Scaling: Message Bus
  • 17. RED HAT | Fabric8 Rocks!17 Broker Scaling: Message BusMessage throughput requirement exceeds broker capacity
  • 18. RED HAT | Fabric8 Rocks!18 Broker Scaling: Message Bus Message Bus
  • 19. RED HAT | Fabric8 Rocks!19 Broker Scaling: Message Bus Message Bus
  • 20. RED HAT | Fabric8 Rocks!20 Broker Scaling: Message Bus Message Bus Message BusMessage Bus
  • 21. RED HAT | Fabric8 Rocks!21 Broker Scaling: Problems Message Bus Message Bus Message BusMessage Bus • Diminished returns • Focused Overload • Stranded Capacity
  • 22. RED HAT | Fabric8 Rocks!22 How do we scale Messaging for the Cloud ?
  • 23. RED HAT | Fabric8 Rocks!23 Requirements for Messaging as a Service • Needs to support many thousands of clients • Flexible, brokers need to be spun up and down, based on demand • Client connections may need to be multiplexed, to decrease the load on individual message brokers • Popular messaging protocols support • Flexible routing needs to be supported
  • 24. RED HAT | Fabric8 Rocks!24 What contenders are already out there ?
  • 25. RED HAT | Fabric8 Rocks!25 ActiveMQ HornetQ RabbitMQ Proprietary Enterprise Messaging
  • 26. RED HAT | Fabric8 Rocks!26 Apache Kafka • Publish/Subscribe messaging – rethought as a distributed commit log • Designed for fast data ingestion of logs • Scalable – designed to allow a single cluster to act as a messaging platform, allowing for elastic expansion with no downtime • Messages are persisted to disk, and replicated to prevent data loss • Allows partitioning of data streams across cluster of machines • Created at Linkedin – donated to the ASF
  • 27. RED HAT | Fabric8 Rocks!27 Apache Kafka Architecture ZooKeeper BrokerBrokerBroker Broker Producer Producer Consumer Consumer
  • 28. RED HAT | Fabric8 Rocks!28 Apache Kafka Performance https://cwiki.apache.org/confluence/display/KAFKA/Kafka+papers+and+presentations From: Kafka: A distributed Messaging System for log processing, Jun Rao
  • 29. RED HAT | Fabric8 Rocks!29 Apache Kafka – Differences with a Message Broker • Distributed commit log – broker maintains no state • Niche – so works really well for a particular set of use cases • Proprietary • Written in Scala • Consumers have to maintain state
  • 30. RED HAT | Fabric8 Rocks!30 Kubernetes Helps
  • 31. RED HAT | Fabric8 Rocks!31 Fabric8 MQ – not a message broker – but a scalable messaging system Many concurrent connections, one out Flexible Protocols Multiplex Connections Vert.x Core Embedded Camel, Integration with APIMan OpenWire, STOMP MQTT AMQP WebSockets – all done asynchronously Scaling Connections NOT a problem Destination Sharding
  • 32. RED HAT | Fabric8 Rocks!32 Fabric8 MQ Independently scalable: Node Pod ActiveMQ Broker AMQ Replication Controller Node Pod ActiveMQ Broker Node Pod ActiveMQ Broker Fabric8MQ Replication Controller Vert.x Vert.x Vert.x Multiplexer Multiplexer Multiplexer Fabric8MQ Vert.x Vert.x Vert.x Multiplexer Multiplexer Multiplexer Fabric8MQ Vert.x Vert.x Vert.x Multiplexer Multiplexer Multiplexer Fabric8MQ
  • 33. RED HAT | Fabric8 Rocks!33 Fabric8 MQ Message Flow: Protocol Conversion Camel Routing API Management Multiplexer Destination Sharding Broker Control
  • 34. RED HAT | Fabric8 Rocks!34 Qpid Dispatch Router BrokerBrokerBroker Broker Producer ProducerConsumer Consumer Router Router Router Router AMQP 1.0
  • 35. RED HAT | Fabric8 Rocks!35 Multiplexing • Brokers performs better the lower the number of connections – less contention • IoT applications have long lived connections, but small amount of traffic • All configurable – you can decide how fine or coarse grained you want multiplexing • Dispatch Router does this automatically
  • 36. RED HAT | Fabric8 Rocks!36 Destination Sharding: Benefits • There is an overhead associated with a Destination – restrict the number of Destinations per Broker to improve performance • Co-locate producers and consumers of a Destination to the same broker reduces latency and improves overall performance • Increased scalability for your messaging solution • Dispatch Router does this automatically
  • 37. RED HAT | Fabric8 Rocks!37 Red Hat Messaging – how we plan to tackle messaging for the cloud …
  • 38. RED HAT | Fabric8 Rocks!38 What we have today  Separate clients tied to broker- specific protocols  Limited integration between brokers & overlapping capabilities MRG-M (Apache Qpid C++ broker) •AMQP, high performance, routing, HA •No longer sold but actively supported M. MQ 6.x (Apache ActiveMQ 5.x Java broker) • Multi-protocol JMS-oriented broker • Large user community, rich feature set EAP HornetQ JMS Messaging Broker (HornetQ GitHub project) •Multi-protocol JMS-oriented broker •JMS 2.0, best-in-class SpecJMS performance MRG-M 3.1 A-MQ 6.x HornetQ EAP6
  • 39. RED HAT | Fabric8 Rocks!39 Clients A-MQ Where we’re going • Consolidate to a single messaging product, known as A-MQ • Consists of three components: Broker, Interconnect & Clients • Developed in open, community-based, upstream projects and leveraging open, standards-based protocols Broker Interconnect
  • 40. RED HAT | Fabric8 Rocks!40 Where we’re going M. MQ Broker • Full-featured, high-performance, multi-protocol enterprise broker • HA through replication and failover M. MQ Interconnect Router • Large-scale, secure, reliable, and manageable messaging networks • Use with or without broker. HA through redundant routing. M. MQ Clients • Ubiquitous, standards-based messaging clients for all common platforms and programming languages A- MQ A-MQ Broker Interconnect Clients
  • 41. RED HAT | Fabric8 Rocks!41 Where we’re going • AMQP (Advanced Message Queuing Protocol) • Rich semantics, multiplexing, flow control, extensible • International standard – ISO/IEC ISO 19464 • MQTT (Message Queuing Telemetry Transport) • Lightweight “first mile” telemetry • OASIS Standard; International standardization in progress • STOMP (Simple Text-Oriented Messaging Protocol) • WebSocket encapsulation A-MQ Broker Interconnect Clients
  • 42. RED HAT | Fabric8 Rocks!42 Messaging for Microservices
  • 43. RED HAT | Fabric8 Rocks!43 Reliable, Fast Communication between Services
  • 44. RED HAT | Fabric8 Rocks!44 Functional Decomposition
  • 45. RED HAT | Fabric8 Rocks!45 Micromessaging • Whilst external services should often be http – internal services do not need to be. • Using a messaging system can improve performance and scalability • Standards are important – immutable infrastructure leads to disposable infrastructure. Apply that all assets in your design.
  • 46. RED HAT | Fabric8 Rocks!46 Micromessaging: inter-service communications Broker Service A Service A Service A Service C Service A Service B Service A Service F Service A Service E Service A Service Drequest reply subscribe subscribe publishpublish
  • 47. RED HAT | Fabric8 Rocks!47 Micromessaging: Control Plane BrokerController Service A Service F Service A Service A subscribe subscribe publish {Start Processing} {Stop Processing}
  • 48. RED HAT | Fabric8 Rocks!48 Micromessaging: Stream Processing Broker publish Event Listener SMS Event Listener Event Listener HTTP Post Event Listener HTTP Post Event Listener HTTP Post Event Listener HTTP Post Event Listener HTTP Post SMTP publish publish Event Processing Engine
  • 49. RED HAT | Fabric8 Rocks!49 Micromessaging anti-patterns • Any pattern that is transactional in nature e.g. Transactional Client • Any pattern that relies on Message Persistence Durable Subscriber, Guaranteed Delivery • Any pattern where the message system inspects, or selectively routes messages Message Filter, Content Based Routing, Content Enricher
  • 50. RED HAT | Fabric8 Rocks!50 Micromessaging: what to use ? Qpid Dispatch Router
  • 51. RED HAT | Fabric8 Rocks!51
  • 52. RED HAT | Fabric8 Rocks!52 Demo: Variance Collector Compare Interprocess communication: HTTP vs Messaging
  • 53. RED HAT | Fabric8 Rocks!53 Standard Deviation Processor: public void process(Exchange exchange) throws Exception { String message = exchange.getIn().getBody(String.class); ObjectMapper objectMapper = new ObjectMapper(); TypeFactory typeFactory = objectMapper.getTypeFactory(); List<Double> values = objectMapper.readValue(message, typeFactory.constructCollectionType(List.class, Double.class)); SummaryStatistics summaryStatistics = new SummaryStatistics(); List<Double> list = new ObjectMapper().readValue(message, List.class); for (Double value : list) { summaryStatistics.addValue(value); } String stdDev = Double.toString(summaryStatistics.getStandardDeviation()); exchange.getOut().setBody(stdDev); }
  • 54. RED HAT | Fabric8 Rocks!54 Standard Deviation Route: @ContextName("stddevCamel") public class StdDevHTTP extends RouteBuilder { @Inject StdDevProcessor processor; @Override public void configure() throws Exception { from("jetty:http://0.0.0.0:8183/std-dev").doTry() .process(processor) .doCatch(Throwable.class) .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500)) .setBody(constant("{"error" : "Service failed"}")) .end(); } }
  • 55. RED HAT | Fabric8 Rocks!55 HTTP Calculator @Override public void configure() throws Exception { onException(Throwable.class).maximumRedeliveries(-1).delay(5000); from("direct:start") .multicast() .parallelProcessing().timeout(10000).to(stdDevService, varianceService) .end().setHeader("name", constant("HTTP")).to(collectorService); }
  • 56. RED HAT | Fabric8 Rocks!56 HTTP Calculator @Inject @Uri("netty4-http:http://{{service:collector-http:localhost:8184}}/results/http") private Endpoint collectorService; @Inject @Uri("netty4-http:http://{{service:variance-http:localhost:8182}}/variance") private Endpoint varianceService; @Inject @Uri("netty4-http:http://{{service:std-dev-http:localhost:8183}}/std-dev") private Endpoint stdDevService
  • 57. RED HAT | Fabric8 Rocks!57 Messaging Calculator Endpoint jmsSender = getContext().getEndpoint("jms:topic:" + CALCULATION_TOPIC + "?preserveMessageQos=true" + "&replyTo=" + RESULT_QUEUE +"&replyToType=Exclusive" + "&asyncConsumer=true" + "&asyncStartListener=true" + "&concurrentConsumers=10");
  • 58. RED HAT | Fabric8 Rocks!58 Messaging Calculator from("jms:queue:”+RESULT_QUEUE).aggregate(header(CORRELATION_HEADER), new AggregationStrategy() { @Override public Exchange aggregate(Exchange oldExchange, Exchange newExchange) { if (oldExchange == null) { return newExchange; } String oldBody = oldExchange.getIn().getBody(String.class); String newBody = newExchange.getIn().getBody(String.class); oldExchange.getIn().setBody(oldBody + "+" + newBody); return oldExchange; } }).completionSize(NUMBER_OF_SERVICES).completionTimeout(2000) .setHeader("name", constant("MSG")).to(collectorService);
  • 59. RED HAT | Fabric8 Rocks!59 The Collector: @ContextName("collectorCamel") public class CollectorHTTP extends RouteBuilder { @Override public void configure() throws Exception { getContext().addRoutePolicyFactory(new MetricsRoutePolicyFactory()); from("jetty:http://0.0.0.0:8184/results/http”).setId("HTTP"); from("jetty:http://0.0.0.0:8184/results/msg”).setId("MSG"); } }
  • 60. RED HAT | Fabric8 Rocks!60 Links:Links: http://camel.apache.orghttp://camel.apache.org http://fabric8.iohttp://fabric8.io https://github.com/rajdavies/microservices-exampleshttps://github.com/rajdavies/microservices-examples

Editor's Notes

  1. Scale cube from the The Art of Scalability – by Abbott and Fisher