Submit Search
Upload
Introduction to ActiveMQ Apollo
•
26 likes
•
22,007 views
D
dejanb
Follow
Next generation broker core
Read less
Read more
Technology
Report
Share
Report
Share
1 of 45
Download now
Download to read offline
Recommended
Deploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse Fabric
dejanb
Enterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQ
Rob Davies
IBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQ
Roman Kharkovski
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
Rob Davies
Advanced messaging with Apache ActiveMQ
Advanced messaging with Apache ActiveMQ
dejanb
Implementing WebServices with Camel and CXF in ServiceMix
Implementing WebServices with Camel and CXF in ServiceMix
Adrian Trenaman
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
Adrian Gigante
Web Server/App Server Connectivity
Web Server/App Server Connectivity
webhostingguy
Recommended
Deploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse Fabric
dejanb
Enterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQ
Rob Davies
IBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQ
Roman Kharkovski
Connecting Applications Everywhere with ActiveMQ
Connecting Applications Everywhere with ActiveMQ
Rob Davies
Advanced messaging with Apache ActiveMQ
Advanced messaging with Apache ActiveMQ
dejanb
Implementing WebServices with Camel and CXF in ServiceMix
Implementing WebServices with Camel and CXF in ServiceMix
Adrian Trenaman
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
Adrian Gigante
Web Server/App Server Connectivity
Web Server/App Server Connectivity
webhostingguy
JMS and ActiveMQ - VuNV 201307
JMS and ActiveMQ - VuNV 201307
Framgia Vietnam
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
Gert Vanthienen
An Introduction to Apache ServiceMix 4 - FUSE ESB
An Introduction to Apache ServiceMix 4 - FUSE ESB
Adrian Trenaman
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
Christina Lin
WebSockets in Enterprise Applications
WebSockets in Enterprise Applications
Pavel Bucek
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
Omi Om
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Alex Theedom
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
Roman Kharkovski
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
Bruno Borges
Web service through cxf
Web service through cxf
Roger Xia
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
David Delabassee
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
Edward Burns
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
Bruce Snyder
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WASdev Community
Connecting applicationswitha mq
Connecting applicationswitha mq
Rob Davies
IBM WebSphere application server
IBM WebSphere application server
IBM Sverige
Succeding with the Apache SOA stack
Succeding with the Apache SOA stack
Johan Edstrom
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
Ed Burns
WebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination Features
Chris Bailey
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
Edward Burns
Be jug 090611_apacheservicemix
Be jug 090611_apacheservicemix
Charles Moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
Charles Moulliard
More Related Content
What's hot
JMS and ActiveMQ - VuNV 201307
JMS and ActiveMQ - VuNV 201307
Framgia Vietnam
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
Gert Vanthienen
An Introduction to Apache ServiceMix 4 - FUSE ESB
An Introduction to Apache ServiceMix 4 - FUSE ESB
Adrian Trenaman
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
Christina Lin
WebSockets in Enterprise Applications
WebSockets in Enterprise Applications
Pavel Bucek
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
Omi Om
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Alex Theedom
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
Roman Kharkovski
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
Bruno Borges
Web service through cxf
Web service through cxf
Roger Xia
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
David Delabassee
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
Edward Burns
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
Bruce Snyder
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WASdev Community
Connecting applicationswitha mq
Connecting applicationswitha mq
Rob Davies
IBM WebSphere application server
IBM WebSphere application server
IBM Sverige
Succeding with the Apache SOA stack
Succeding with the Apache SOA stack
Johan Edstrom
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
Ed Burns
WebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination Features
Chris Bailey
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
Edward Burns
What's hot
(20)
JMS and ActiveMQ - VuNV 201307
JMS and ActiveMQ - VuNV 201307
ServiceMix 4 -- Integrating OSGi with JBI
ServiceMix 4 -- Integrating OSGi with JBI
An Introduction to Apache ServiceMix 4 - FUSE ESB
An Introduction to Apache ServiceMix 4 - FUSE ESB
JBoss Fuse - Fuse workshop EAP container
JBoss Fuse - Fuse workshop EAP container
WebSockets in Enterprise Applications
WebSockets in Enterprise Applications
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
Java EE 8: What Servlet 4.0 and HTTP/2 mean to you
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
Web service through cxf
Web service through cxf
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
Connecting applicationswitha mq
Connecting applicationswitha mq
IBM WebSphere application server
IBM WebSphere application server
Succeding with the Apache SOA stack
Succeding with the Apache SOA stack
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
WebSphere Technical University: Top WebSphere Problem Determination Features
WebSphere Technical University: Top WebSphere Problem Determination Features
CON5898 What Servlet 4.0 Means To You
CON5898 What Servlet 4.0 Means To You
Similar to Introduction to ActiveMQ Apollo
Be jug 090611_apacheservicemix
Be jug 090611_apacheservicemix
Charles Moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
Charles Moulliard
Enterprise Integration Patterns and DSL with Apache Camel
Enterprise Integration Patterns and DSL with Apache Camel
Dmitry Buzdin
Apache Camel - JEEConf May 2011
Apache Camel - JEEConf May 2011
Claus Ibsen
Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template Engine
James Strachan
Preparing your code for Java 9
Preparing your code for Java 9
Deepu Xavier
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
Jean-Sebastien Delfino
What Riding the Camel can do to make integration easier for you
What Riding the Camel can do to make integration easier for you
Claus Ibsen
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Marco Antonio Maciel
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009
Roland Tritsch
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
David Delabassee
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
David Delabassee
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Edward Burns
Low Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdf
Claus Ibsen
Apache Camel Introduction
Apache Camel Introduction
Claus Ibsen
Mysql repos testing.odp
Mysql repos testing.odp
Ramana Yeruva
Fusesource camel-persistence-part2-webinar-charles-moulliard
Fusesource camel-persistence-part2-webinar-charles-moulliard
Charles Moulliard
Shake Hooves With BeEF - OWASP AppSec APAC 2012
Shake Hooves With BeEF - OWASP AppSec APAC 2012
Christian Frichot
20161029 py con-mysq-lv3
20161029 py con-mysq-lv3
Ivan Ma
Apache Storm and Oracle Event Processing for Real-time Analytics
Apache Storm and Oracle Event Processing for Real-time Analytics
Prabhu Thukkaram
Similar to Introduction to ActiveMQ Apollo
(20)
Be jug 090611_apacheservicemix
Be jug 090611_apacheservicemix
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
Enterprise Integration Patterns and DSL with Apache Camel
Enterprise Integration Patterns and DSL with Apache Camel
Apache Camel - JEEConf May 2011
Apache Camel - JEEConf May 2011
Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template Engine
Preparing your code for Java 9
Preparing your code for Java 9
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
What Riding the Camel can do to make integration easier for you
What Riding the Camel can do to make integration easier for you
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
RESTful Services and Distributed OSGi - 04/2009
RESTful Services and Distributed OSGi - 04/2009
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Low Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdf
Apache Camel Introduction
Apache Camel Introduction
Mysql repos testing.odp
Mysql repos testing.odp
Fusesource camel-persistence-part2-webinar-charles-moulliard
Fusesource camel-persistence-part2-webinar-charles-moulliard
Shake Hooves With BeEF - OWASP AppSec APAC 2012
Shake Hooves With BeEF - OWASP AppSec APAC 2012
20161029 py con-mysq-lv3
20161029 py con-mysq-lv3
Apache Storm and Oracle Event Processing for Real-time Analytics
Apache Storm and Oracle Event Processing for Real-time Analytics
More from dejanb
How is this sausage made
How is this sausage made
dejanb
Messaging for the cloud
Messaging for the cloud
dejanb
Scaling out eclipse hono
Scaling out eclipse hono
dejanb
Building Open Source IoT Cloud
Building Open Source IoT Cloud
dejanb
Messaging for IoT
Messaging for IoT
dejanb
Messaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQ
dejanb
Apache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in action
dejanb
More from dejanb
(7)
How is this sausage made
How is this sausage made
Messaging for the cloud
Messaging for the cloud
Scaling out eclipse hono
Scaling out eclipse hono
Building Open Source IoT Cloud
Building Open Source IoT Cloud
Messaging for IoT
Messaging for IoT
Messaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQ
Apache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in action
Recently uploaded
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
null - The Open Security Community
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
charlottematthew16
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
hariprasad279825
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
ScyllaDB
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Slibray Presentation
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Fwdays
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
UiPathCommunity
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Lorenzo Miniero
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Safe Software
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Alfredo García Lavilla
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Florian Wilhelm
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Rizwan Syed
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scott Keck-Warren
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Memoori
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
carlostorres15106
Recently uploaded
(20)
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Introduction to ActiveMQ Apollo
1.
Introduc6on to Ac6veMQ Apollo Bosanac Dejan May 2011
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 1
2.
About me Bosanac Dejan Senior So3ware Engineer at FUSESource ‐ hNp://fusesource.com
Apache Ac6veMQ commiNer and PMC member Co‐author of Ac6veMQ in Ac6on A Progress So3ware Company 2 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
3.
What we are going to cover? Why Apollo? HawtDispatch
Connec6vity • Stomp 1.1, MQTT, JMS, ... LevelDB Store Features • REST Based Management Future A Progress So3ware Company 3 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
4.
Why Apollo?
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 4
5.
Apache Apollo
Goal An experiment to beNer u6lize high core counts on modern processors Resulted A completely new broker core that is much more determinis6c, stable, and scaleable Branched as a new project and a chance for a clean start A Progress So3ware Company 5 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
6.
Apollo Architecture Reactor Based Thread Model Scala implementa6on
Protocol Agnos6c REST Based Management A Progress So3ware Company 6 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
7.
HawtDispatch
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 7
8.
HawtDispatch ‐ Introduc6on Small (less than 100k) thread pooling and NIO event no6fica6on
framework API hNp://hawtdispatch.fusesource.org/ Java clone of Grand Central Dispatch Avoid explicit usage of threads and synchroniza6on points in mul6threaded applica6ons Applica6on developer submit tasks to dispatch queues Fixed‐sized thread pool execute tasks A Progress So3ware Company 8 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
9.
HawtDispatch ‐ Dispatch Queues Global Dispatch Queue
• 3 global queues shared • Non determinis6c order • 3 priori6es DispatchQueue queue = getGlobalQueue(HIGH); Serial Dispatch Queue • Serial FIFO queues • Synchronize certain task execu6ons DispatchQueue queue = createQueue("My queue"); A Progress So3ware Company 9 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
10.
HawtDispatch ‐ Submijng Tasks Java
queue.execute(new Runnable(){ public void run() { System.out.println("Hi!"); } }); Scala queue { System.out.println("Hi!"); } // or queue.execute(^{ System.out.println("Hi!"); Tasks }) • non‐blocking • lock‐free • wait‐free A Progress So3ware Company 10 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
11.
HawtDispatch ‐ Dispatch Sources Trigger a task execu6on based on external event Ideal for dealing with NIO events
SelectableChannel channel = ... DispatchQueue queue = createQueue() DispatchSource source = createSource(channel, OP_READ, queue); source.setEventHandler(new Runnable(){ public void run() { ByteBuffer buffer = ByteBuffer.allocate(1024); int count; while( (c=channel.read(buffer)) > 0 ) { // just dump it to the console System.out.write(buffer.array(), buffer.offset(), buffer.position()); } } }); source.resume(); A Progress So3ware Company 11 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
12.
HawtDispatch ‐ conclusion Ideal for developing highly concurrent applica6ons Ideal for handling NIO events
Ideal for implemen6ng broker cores Impressive performances New development paradigm means it couldn t be fiNed into exis6ng Ac6veMQ broker A Progress So3ware Company 12 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
13.
Connec6vity
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 13
14.
Message protocols ‐ Overview Broker Core is Protocol Agnos6c Protocols are Plugins
• STOMP 1.0/1.1 • MQTT v3.1 • Openwire Transports are Pluggable too. • TCP, WebSockets etc. Protocol detec6on (all protocols can use 1 port) A Progress So3ware Company 14 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
15.
Feature: Mul6ple Transports TCP SSL
WebSockets Secure WebSockets UDP A Progress So3ware Company 15 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
16.
Stomp ‐ basics hNp://stomp.github.com/ Simple Text Orientated Messaging Protocol
HTTP for the messaging realm Very simple, so it s easy to write clients and servers in prac6cally any language A lot of exis6ng clients in C, Ruby, Pyhton, JS, PHP, etc. Provides a way to connect different plamorms in asynchronous way Also Implemented by Ac6veMQ, RabbitMQ, HornetQ, and many others. A Progress So3ware Company 16 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
17.
Stomp ‐ Nutshell Based on text frames, similar to
HTTP ones MESSAGE subscription:0 Can transport binary bodies message-id:007 Frame command for every destination:/queue/a content-type:text/plain messaging concept, like CONNECT, MESSAGE, SUBSCRIBE, ACK, etc. hello queue a^@ New in version 1.1 • Protocol nego6a6on • Heartbeats • NACK • Virtual hosts A Progress So3ware Company 17 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
18.
Apollo and Stomp Both 1.0 and 1.1 Supported
SEND Des6na6on Types destination:/queue/a • Queues ‐ /queue/a receipt:001 • Topics ‐ /topic/b persistent: true • Durable Subscrip6ons ‐ /dsub/c hello queue a ^@ Reliable messaging RECEIPT receipt-id:001 ^@ A Progress So3ware Company 18 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
19.
Apollo and Stomp More messaging features
• Message expira6on • Topic retained messages • Topic durable subscrip6ons • Queue browsing • Queue message sequences • Exclusive subscrip6ons • Temporary des6na6ons • Des6na6on wildcards • Composite des6na6ons • Message selectors A Progress So3ware Company 19 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
20.
Connec6vity ‐ MQTT Get at hNps://github.com/fusesource/fuse‐extra/ Focused on:
• low bandwidth networks • unreliable networks • Small footprint / Embedded Devices 3 QoS Op6ons Also Implemented by WebsphereMQ, MosquiNo and others. A Progress So3ware Company 20 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
21.
Connec6vity – JMS API StompJMS is a JMS 1.1 client implemented using the STOMP
protocol. Get it at hNps://github.com/fusesource/stompjms Client implemented with HawtDispatch • Constant number of threads no maNer how many client connec6ons are established. import org.fusesource.stomp.jms.*;import javax.jms.*; StompJmsConnectionFactory factory = new StompJmsConnectionFactory();factory.setBrokerURI("tcp://localhost: 61613 ); Connection connection = factory.createConnection( admin , password ); Destination example = new StompJmsDestination( /queue/example ); A Progress So3ware Company 21 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
22.
Connec6vity – OpenWire OpenWire is the na6ve binary protocol implemented by Ac6veMQ API op6ons:
• JMS 1.1 Client of Ac6veMQ 5.x • NMS Client for C# Apps • CMS Client for C++ Apps Working Features • Queues, Topics, Durable Subscrip6ons • Temporary Des6na6ons • Transac6ons Not Yet Supported • XA Transac6ons (distributed transac6ons) • Network of Brokers style clustering • 0 sized consumer prefetches A Progress So3ware Company 22 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
23.
LevelDB Store
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 23
24.
Message Store ‐ overview Message Stores are Plugins Ships with 2 Op6ons
• LevelDB Store • BDB Store Used to store • persistent messages • non‐persistent messages that needs to be swapped out of memory Non‐persistent messages that get swapped out do not get dropped on restart Delayed Writes A Progress So3ware Company 24 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
25.
LevelDB ‐ Basics What is LevelDB
• LevelDB is a fast key‐value storage library • WriNen at Google • Provides an ordered mapping from string keys to string values • Based on SSTable and Log Structured Merge (LSM) Trees A Progress So3ware Company 25 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
26.
LevelDB ‐ Basics Designed to efficiently store large numbers of key‐value pairs while
op6mizing for high throughput, sequen6al read/write workloads Ideal for implemen6ng message store index Much beNer performance over tradi6onal B‐Tree indexes (used in KahaDB) A Progress So3ware Company 26 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
27.
LevelDB ‐ Basics It s a C++ library (no client‐server support)
Batching writes Forward and backward itera6on over data Uses Snappy compression A Progress So3ware Company 27 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
28.
LevelDB Store Uses LevelDB to maintain indexes into log files holding the
messages Uses a JNI driver on Linux and OS X, but falls back to a pure Java version on other plamorms Supports replica6on to get High Availability Default store in Apollo. Available in Apache Ac6veMQ 5.6.0 A Progress So3ware Company 28 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
29.
LevelDB vs KahaDB It maintains fewer index entries per message than KahaDB which
means it has a higher persistent throughput. Faster recovery when a broker restarts LevelDB based index provide a much beNer performance than the B‐Tree for sequen6al access LevelDB indexes support concurrent read access Pauseless data log file garbage collec6on cycles A Progress So3ware Company 29 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
30.
LevelDB vs KahaDB Uses fewer read IO opera6ons to load stored messages. It will only journal the payload of the message once
Exposes it's status via JMX for monitoring Supports replica6on to get High Availability A Progress So3ware Company 30 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
31.
LevelDB store ‐ HA HA version of store works with Hadoop based file systems Message log is mirrored to HDFS
It can sync on HDFS file instead of local file system LevelDB indexes are immutable on disk (SSTables) On checkpoint .sst files are uploaded to HDFS A Progress So3ware Company 31 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
32.
LevelDB store ‐ HA Recovery On master failure, slave will download
• message log • .sst files associated with the latest uploaded index Con6nue with regular recovery process A Progress So3ware Company 32 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
33.
LevelDB store – HA locking Master elec6on is done externally Mul6ple brokers should never use the same HDFS path
Apache ZooKeeper good op6on for implemen6ng distributed locking FuseFabric (hNp://fuse.fusesource.org/fabric/) can be used as well A Progress So3ware Company 33 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
34.
BDB store Not ASL 2.0! You have to Agree to the BDB license & download from Oracle. Pure Java implementa6on Very robust The BDB library supports advanced features like
replica6on (not yet exploited) A Progress So3ware Company 34 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
35.
Features
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 35
36.
Feature: JAAS Authen6ca6on Use any 3rd party JAAS login module Ships with security enabled by default • Default id/password is admin/password File based user and group configura6on Supports IP address white and black lists. X509 Cer6ficates Op6onal guest login support
A Progress So3ware Company 36 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
37.
Feature: Authoriza6on rules Fine grained control of who can • admin, monitor, configure, connect, create, destroy,
• send, receive, consume On broker resources like: • broker, connector, virtual host, topic, queue or durable subscrip6ons <access_rule allow="bartenders" action="send,consume kind= queue topic id= BAR.* /> <access_rule deny="guests" action="consume"/> A Progress So3ware Company 37 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
38.
Feature: Config Updates All Configura6on files are watch and changes are applied at run6me:
• Broker config: etc/apollo.xml • JAAS config files like: etc/user.proper6es • Logging config: etc/log4j.proper6es No need to restart to apply config changes A Progress So3ware Company 38 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
39.
Feature: Config Updates All Configura6on files are watch and changes are applied at run6me:
• Broker config: etc/apollo.xml • JAAS config files like: etc/user.proper6es • Logging config: etc/log4j.proper6es No need to restart to apply config changes A Progress So3ware Company 39 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
40.
Feature: REST Management curl -u
"admin:password" http://localhost:61680/broker/virtual-hosts/default.json A Progress So3ware Company 40 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
41.
Where is it going?
A Progress So3ware Company Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. FuseSource Confiden6al A Progress So3ware Company 41
42.
Where has it been?
A Progress So3ware Company 42 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
43.
Feature diff vs Ac6veMQ
Missing in Apollo Only in Apollo Networks of Brokers REST Management API Priority Support Secure WebSockets Message Groups Message Sequences Message Scheduling Con6nuous Queue XA Transac6ons Browsing JMX Management API Run6me Config Updates Per Consumer Store Prefetch A Progress So3ware Company 43 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
44.
Future Start integra6ng it in Ac6veMQ
• Apollo should be a new broker engine for 6.0 • We should try to port all exis6ng features (networks, priority queues, XA, etc.) Tons of interes6ng work ahead of us ‐ Join us A Progress So3ware Company 44 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
45.
Ques6ons? Links:
• Apache Apollo hNp://ac6vemq.apache.org/apollo/ • STOMP Benchmarks hNp://hiramchirino.com/stomp‐benchmark/ • MQTT Protocol Plugin for Apollo hNps://github.com/fusesource/fuse‐extra • HawtDispatch hNp://hawtdispatch.fusesource.org/ • StompJMS hNps://github.com/fusesource/stompjms Blog: hNp://www.nighNale.net TwiNer: • hNp://twiNer.com/dejanb • hNp://twiNer.com/fusenews A Progress So3ware Company 45 Copyright © 2011 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved.
Download now