SlideShare a Scribd company logo
 
What's all the buzz about? Tim Fox Messaging Lead JBoss 03 Sep 2009
Change of plan This presentation was scheduled to be about JBoss messaging This presentation is actually about  “ HornetQ” http://jboss.org/hornetq
H HornetQ is the new name for JBoss Messaging 2 HornetQ is an open source community project to build a multi-protocol asynchronous messaging system HornetQ is designed for performance HornetQ is designed with usability in mind HornetQ is full featured See the wiki for more information: http://www.jboss.org/community/wiki/HornetQGeneralFAQs
How does HornetQ relate to JBoss Messaging? We decided to rename JBoss Messaging 2 to HornetQ JBM 1.x and 2.x code bases 95%+ different. HornetQ is a different beast to JBM 1.x HornetQ is not tightly coupled to JBoss Application Server
How is HornetQ licenced? Most of HornetQ is licenced using ASL 2.0 A few files still under LGPL Why ASL, not LGPL?
Usability is critical! Key design goal of HornetQ is ease of use Simple API Clear and simple to configure Great docs Ships with over 65 fully runnable examples out of the box Minimal third party dependencies
Both standalone and JEE messaging HornetQ is a fully functional stand-alone messaging server – if you don't want an app server, don't use an app server HornetQ can also be integrated with any JEE application server, e.g. JBoss Application Server 5.0, using its JCA adaptor HornetQ can also be used with any dependency injection framework, e.g. JBoss MC, Spring, Google Guice
Elegant generic architecture Fully functional JMS agnostic messaging system No dependencies on JMX, JNDI, JCA, etc. Just a set of simple POJOs JMS functionality applied as thin facade on the client side Much, much more than just JMS! Can be embedded in an application that requires messaging internally.
Generic core and JMS facade Server side Client side Core HornetQ client is fully functional HornetQ Client HornetQ Server JMS Facade
Stand-alone deployment using JBoss Micro-container JNDI HornetQ POJOs AN Other Service
HornetQ inside JBoss AS 5.x JBoss MC JMX JNDI HornetQ POJOs A.N. Other Service EJB Transactions Web services etc HTTP
HornetQ embedded in 3 rd  party application User application (process) HornetQ POJOs User application classes
HornetQ embedded code example 01. MessagingServer server = new MessagingServerImpl(); 02. server.start(); 03. ClientSessionFactory sf = new ClientSessionFactoryImpl(...); 04. ClientSession sess = sf.createSession(); 05. sess.createQueue("address1", "queue1"); 06. sess.start(); 07. ClientProducer prod = sess.createProducer("address1"); 08. Message message = new ClientMessageImpl(false); 09. message.getBody().writeString("hello world"); 10. prod.send(message); 11. ClientConsumer cons = sess.createConsumer("queue1"); 12. Message received = cons.receive(); 13. System.out.println("Got message " + received.getBody().readString()); 14. sess.close(); 15. server.stop();
HornetQ features Very high performance journal Support for huge queues and huge messages with small server and client footprint Pluggable transport system Seamless High Availability (HA) Massively flexible clustering Extensive management API Lots, lots, more, but no time here! See the wiki for a full list: http://www.jboss.org/community/wiki/HornetQFeatures
Ultra high performance journal HornetQ persistence is very fast Very fast store using Linux asynchronous IO. Up to 100+ MiB/s on a single node! JNI interface to aio library (libaio), encapsulated in Java package. Automatic switches to Java NIO when not running on Linux
Asynchronous IO on Linux OS Asynch store Client Send 1 Send 2 Send 3 Disc Ack 1 Send 4 Ack 2 Ack 3 Send 5 Time JNI
Huge queues and messages HornetQ supports huge queues – far bigger than can fit in available RAM Run Terabyte queues while the server is only running in 50MiB of RAM! Send and receive huge multi-gigabyte messages with all the normal transactional semantics Effectively, only limit to message size is available disk space. We have tested messages up to 8 GiB in size.
Configurable Transport system Fully pluggable transport Ships with default implementation using JBoss Netty http://jboss.org/netty/ TCP transport SSL transport HTTP transport Servlet transport In-VM transport
HornetQ High Availability Transparent reconnection on failure 100% guaranteed no loss or duplication of messages Fail-over via store on SAN Replicated journal (Shared nothing approach)
HornetQ Clusters HornetQ servers can be grouped into clusters Clusters are a way of balancing message processing across several nodes. Messages arriving on cluster are balanced to different nodes to spread the load – default balancing is round robin. Balancing takes into account selectors and consumers on each node
Clusters Messages Node A Node B Node C Messages balanced according to number of matching consumers C C C C C C
HornetQ Core Bridges Core bridges take messages from one queue and forward them to another remote address Core bridges can use filters to select only certain messages Core bridges can apply transformations Core bridges are high performance Core bridges can work with unreliable connections Core bridges are not JMS bridges
Core bridges Filter messages Send to address Node A Node B messages Internet, WAN, etc Queue Core bridge Queue Queue Queue Divert
HornetQ diverts Diverts are a  routing table  for messaging Diverts take messages destined for one address and divert them to another address Diverts can be exclusive or not. Non exclusive diverts copy messages. Diverts can use filters to only select certain messages Diverts are high performance
Diverts Filter Transform Filter Transform Exclusive diverts can be used to “divert” Non exclusive diverts can be used to “siphon” or “snoop” Queue A Exclusive divert Queue B Queue C Queue D Non exclusive divert Queue F Queue E
Global scale messaging fabric Combine clusters, bridges and diverts and you can create a  massively configurable global messaging fabric to run your business. All with zero message loss and zero message duplication guarantee. Add HA to provide unbroken up-time. Use HornetQ as the messaging fabric together with JBoss ESB, and benefit from all the 3 rd  party connectors provided by JBoss ESB.
Going ahead Interoperability – REST, AMQP, STOMP, XMPP, Ajax/Comet Server-less mode Performance bench-marks See the road map here: http://www.jboss.org/community/wiki/Roadmap
Interoperability REST Provide a simple RESTful interface for HornetQ over HTTP. See REST-* project AMQP – HornetQ will implement the AMQP protocol STOMP Native STOMP support provides access to HornetQ by many STOMP clients written in different languages XMPP Async web support (Ajax/comet/bayeaux)
Join us! HornetQ is a community project - come and get involved! We are always looking for new developers to help out – there is a lot of cool new stuff to implement. Find us on irc: irc://freenode.net:6667#hornetq
Check out the  HornetQ web site: http://jboss.org/hornetq Follow HornetQ on twitter: http://twitter.com/hornetq Visit the blog: http://hornetq.blogspot.com

More Related Content

PDF
Fluentd 101
PPTX
FluentD for end to end monitoring
PDF
The basics of fluentd
PDF
Fluentd vs. Logstash for OpenStack Log Management
PDF
Fluentd Project Intro at Kubecon 2019 EU
PDF
The basics of fluentd
PDF
Dive into Fluentd plugin v0.12
PDF
Fluentd meetup
Fluentd 101
FluentD for end to end monitoring
The basics of fluentd
Fluentd vs. Logstash for OpenStack Log Management
Fluentd Project Intro at Kubecon 2019 EU
The basics of fluentd
Dive into Fluentd plugin v0.12
Fluentd meetup

What's hot (20)

PDF
Like loggly using open source
PDF
Fluentd and Distributed Logging at Kubecon
PDF
Fluentd v1.0 in a nutshell
PDF
Fluentd v1.0 in a nutshell
PDF
Netty @Apple: Large Scale Deployment/Connectivity
PDF
Node.js 1, 2, 3
PDF
Fluentd and WebHDFS
PDF
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
PDF
Fluent-bit
PDF
Redis vs Infinispan | DevNation Tech Talk
PDF
gRPC - RPC rebirth?
PDF
Fluentd loves MongoDB, at MongoDB SV User Group, July 17, 2012
PDF
Fluentd introduction at ipros
PDF
Fluentd meetup dive into fluent plugin (outdated)
PPTX
Building your First gRPC Service
PDF
gRPC: Beyond REST
PDF
Fluentd v0.12 master guide
PDF
gRPC in Go
PDF
Generating Unified APIs with Protocol Buffers and gRPC
PDF
JRuby with Java Code in Data Processing World
Like loggly using open source
Fluentd and Distributed Logging at Kubecon
Fluentd v1.0 in a nutshell
Fluentd v1.0 in a nutshell
Netty @Apple: Large Scale Deployment/Connectivity
Node.js 1, 2, 3
Fluentd and WebHDFS
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Fluent-bit
Redis vs Infinispan | DevNation Tech Talk
gRPC - RPC rebirth?
Fluentd loves MongoDB, at MongoDB SV User Group, July 17, 2012
Fluentd introduction at ipros
Fluentd meetup dive into fluent plugin (outdated)
Building your First gRPC Service
gRPC: Beyond REST
Fluentd v0.12 master guide
gRPC in Go
Generating Unified APIs with Protocol Buffers and gRPC
JRuby with Java Code in Data Processing World
Ad

Similar to HornetQ Presentation On JBoss World 2009 (20)

PPTX
High Volume Web API Management with the WSO2 ESB
PPT
Riding with camel
PDF
Building Killer RESTful APIs with NodeJs
PDF
Maximize Messaging and Performance and Lowering Infrastructure Footprint
ODP
Sap webinar-briefing-sep-2013-final
PDF
Understanding and Using Client JBoss A-MQ APIs
ODP
Web Server-Side Programming Techniques
PPTX
World of Node.JS
PDF
Apache Thrift : One Stop Solution for Cross Language Communication
PPT
Net framework
PDF
Messaging for IoT
DOCX
PDF
MQTT, Eclipse Paho and Java - Messaging for the Internet of Things
PDF
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
PPTX
ESB 4.9.0 extension points, Connectors and Inbound Endpoints
PDF
Data Pipelines with Apache Kafka
PDF
WSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
PDF
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
PDF
Mazda siv - web services
High Volume Web API Management with the WSO2 ESB
Riding with camel
Building Killer RESTful APIs with NodeJs
Maximize Messaging and Performance and Lowering Infrastructure Footprint
Sap webinar-briefing-sep-2013-final
Understanding and Using Client JBoss A-MQ APIs
Web Server-Side Programming Techniques
World of Node.JS
Apache Thrift : One Stop Solution for Cross Language Communication
Net framework
Messaging for IoT
MQTT, Eclipse Paho and Java - Messaging for the Internet of Things
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
ESB 4.9.0 extension points, Connectors and Inbound Endpoints
Data Pipelines with Apache Kafka
WSO2Con USA 2015: An Introduction to the WSO2 Integration Platform
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
Mazda siv - web services
Ad

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
cuic standard and advanced reporting.pdf
PPT
Teaching material agriculture food technology
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Sensors and Actuators in IoT Systems using pdf
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
KodekX | Application Modernization Development
PPTX
Big Data Technologies - Introduction.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Spectroscopy.pptx food analysis technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Modernizing your data center with Dell and AMD
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
cuic standard and advanced reporting.pdf
Teaching material agriculture food technology
The Rise and Fall of 3GPP – Time for a Sabbatical?
The AUB Centre for AI in Media Proposal.docx
Sensors and Actuators in IoT Systems using pdf
Advanced Soft Computing BINUS July 2025.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
KodekX | Application Modernization Development
Big Data Technologies - Introduction.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectroscopy.pptx food analysis technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectral efficient network and resource selection model in 5G networks
Dropbox Q2 2025 Financial Results & Investor Presentation
Modernizing your data center with Dell and AMD
Network Security Unit 5.pdf for BCA BBA.
Reach Out and Touch Someone: Haptics and Empathic Computing

HornetQ Presentation On JBoss World 2009

  • 1.  
  • 2. What's all the buzz about? Tim Fox Messaging Lead JBoss 03 Sep 2009
  • 3. Change of plan This presentation was scheduled to be about JBoss messaging This presentation is actually about “ HornetQ” http://jboss.org/hornetq
  • 4. H HornetQ is the new name for JBoss Messaging 2 HornetQ is an open source community project to build a multi-protocol asynchronous messaging system HornetQ is designed for performance HornetQ is designed with usability in mind HornetQ is full featured See the wiki for more information: http://www.jboss.org/community/wiki/HornetQGeneralFAQs
  • 5. How does HornetQ relate to JBoss Messaging? We decided to rename JBoss Messaging 2 to HornetQ JBM 1.x and 2.x code bases 95%+ different. HornetQ is a different beast to JBM 1.x HornetQ is not tightly coupled to JBoss Application Server
  • 6. How is HornetQ licenced? Most of HornetQ is licenced using ASL 2.0 A few files still under LGPL Why ASL, not LGPL?
  • 7. Usability is critical! Key design goal of HornetQ is ease of use Simple API Clear and simple to configure Great docs Ships with over 65 fully runnable examples out of the box Minimal third party dependencies
  • 8. Both standalone and JEE messaging HornetQ is a fully functional stand-alone messaging server – if you don't want an app server, don't use an app server HornetQ can also be integrated with any JEE application server, e.g. JBoss Application Server 5.0, using its JCA adaptor HornetQ can also be used with any dependency injection framework, e.g. JBoss MC, Spring, Google Guice
  • 9. Elegant generic architecture Fully functional JMS agnostic messaging system No dependencies on JMX, JNDI, JCA, etc. Just a set of simple POJOs JMS functionality applied as thin facade on the client side Much, much more than just JMS! Can be embedded in an application that requires messaging internally.
  • 10. Generic core and JMS facade Server side Client side Core HornetQ client is fully functional HornetQ Client HornetQ Server JMS Facade
  • 11. Stand-alone deployment using JBoss Micro-container JNDI HornetQ POJOs AN Other Service
  • 12. HornetQ inside JBoss AS 5.x JBoss MC JMX JNDI HornetQ POJOs A.N. Other Service EJB Transactions Web services etc HTTP
  • 13. HornetQ embedded in 3 rd party application User application (process) HornetQ POJOs User application classes
  • 14. HornetQ embedded code example 01. MessagingServer server = new MessagingServerImpl(); 02. server.start(); 03. ClientSessionFactory sf = new ClientSessionFactoryImpl(...); 04. ClientSession sess = sf.createSession(); 05. sess.createQueue("address1", "queue1"); 06. sess.start(); 07. ClientProducer prod = sess.createProducer("address1"); 08. Message message = new ClientMessageImpl(false); 09. message.getBody().writeString("hello world"); 10. prod.send(message); 11. ClientConsumer cons = sess.createConsumer("queue1"); 12. Message received = cons.receive(); 13. System.out.println("Got message " + received.getBody().readString()); 14. sess.close(); 15. server.stop();
  • 15. HornetQ features Very high performance journal Support for huge queues and huge messages with small server and client footprint Pluggable transport system Seamless High Availability (HA) Massively flexible clustering Extensive management API Lots, lots, more, but no time here! See the wiki for a full list: http://www.jboss.org/community/wiki/HornetQFeatures
  • 16. Ultra high performance journal HornetQ persistence is very fast Very fast store using Linux asynchronous IO. Up to 100+ MiB/s on a single node! JNI interface to aio library (libaio), encapsulated in Java package. Automatic switches to Java NIO when not running on Linux
  • 17. Asynchronous IO on Linux OS Asynch store Client Send 1 Send 2 Send 3 Disc Ack 1 Send 4 Ack 2 Ack 3 Send 5 Time JNI
  • 18. Huge queues and messages HornetQ supports huge queues – far bigger than can fit in available RAM Run Terabyte queues while the server is only running in 50MiB of RAM! Send and receive huge multi-gigabyte messages with all the normal transactional semantics Effectively, only limit to message size is available disk space. We have tested messages up to 8 GiB in size.
  • 19. Configurable Transport system Fully pluggable transport Ships with default implementation using JBoss Netty http://jboss.org/netty/ TCP transport SSL transport HTTP transport Servlet transport In-VM transport
  • 20. HornetQ High Availability Transparent reconnection on failure 100% guaranteed no loss or duplication of messages Fail-over via store on SAN Replicated journal (Shared nothing approach)
  • 21. HornetQ Clusters HornetQ servers can be grouped into clusters Clusters are a way of balancing message processing across several nodes. Messages arriving on cluster are balanced to different nodes to spread the load – default balancing is round robin. Balancing takes into account selectors and consumers on each node
  • 22. Clusters Messages Node A Node B Node C Messages balanced according to number of matching consumers C C C C C C
  • 23. HornetQ Core Bridges Core bridges take messages from one queue and forward them to another remote address Core bridges can use filters to select only certain messages Core bridges can apply transformations Core bridges are high performance Core bridges can work with unreliable connections Core bridges are not JMS bridges
  • 24. Core bridges Filter messages Send to address Node A Node B messages Internet, WAN, etc Queue Core bridge Queue Queue Queue Divert
  • 25. HornetQ diverts Diverts are a routing table for messaging Diverts take messages destined for one address and divert them to another address Diverts can be exclusive or not. Non exclusive diverts copy messages. Diverts can use filters to only select certain messages Diverts are high performance
  • 26. Diverts Filter Transform Filter Transform Exclusive diverts can be used to “divert” Non exclusive diverts can be used to “siphon” or “snoop” Queue A Exclusive divert Queue B Queue C Queue D Non exclusive divert Queue F Queue E
  • 27. Global scale messaging fabric Combine clusters, bridges and diverts and you can create a massively configurable global messaging fabric to run your business. All with zero message loss and zero message duplication guarantee. Add HA to provide unbroken up-time. Use HornetQ as the messaging fabric together with JBoss ESB, and benefit from all the 3 rd party connectors provided by JBoss ESB.
  • 28. Going ahead Interoperability – REST, AMQP, STOMP, XMPP, Ajax/Comet Server-less mode Performance bench-marks See the road map here: http://www.jboss.org/community/wiki/Roadmap
  • 29. Interoperability REST Provide a simple RESTful interface for HornetQ over HTTP. See REST-* project AMQP – HornetQ will implement the AMQP protocol STOMP Native STOMP support provides access to HornetQ by many STOMP clients written in different languages XMPP Async web support (Ajax/comet/bayeaux)
  • 30. Join us! HornetQ is a community project - come and get involved! We are always looking for new developers to help out – there is a lot of cool new stuff to implement. Find us on irc: irc://freenode.net:6667#hornetq
  • 31. Check out the HornetQ web site: http://jboss.org/hornetq Follow HornetQ on twitter: http://twitter.com/hornetq Visit the blog: http://hornetq.blogspot.com