SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
Advanced Messaging with
       Apache ActiveMQ


Bosanac Dejan
May 2011




                                                                                                                 A Progress Software
1   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                FuseSource                    Company
                                                                                                                     A Progress Software
                                                                                                                     Company
About me

 Bosanac Dejan
 Senior Software Engineer at FUSESource - http://
  fusesource.com
 Apache ActiveMQ committer and PMC member
 Co-author of ActiveMQ in Action




                                                                                                                  A Progress Software
 2   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
What we are going to cover?




       What is ActiveMQ
       The Basics
       Flow control
       Scaling
       High Availability
       Future
       Conclusion




                                                                                                                       A Progress Software
    3     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
What is ActiveMQ?




                                                                                                                 A Progress Software
4   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                FuseSource                    Company
                                                                                                                     A Progress Software
                                                                                                                     Company
Apache ActiveMQ



 Apache ActiveMQ
     • Leading Open Source messaging platform
     • Supported Java Standards:
                           o JMS 1.1, J2EE 1.4, JCA 1.5 and XA


 Reliable, high performance messaging
     • Out-performs many legacy proprietary message queues
     • Configurable for many different deployments


 Multi-Protocol/Multi-Language Support


                                                                                                                   A Progress Software
 5    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Background




       ActiveMQ started in 2005 at CodeHaus
       Moved to Apache Software Foundation in 2006
       1,117,537 lines of code
       24 committers
       Now the most widely used open source messaging
        system on the planet




                                                                                                                      A Progress Software
    6    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
The Basics




                                                                                                                 A Progress Software
7   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                FuseSource                    Company
                                                                                                                     A Progress Software
                                                                                                                     Company
Messaging is




 Loosely coupled exchange of messages between
  applications
 Location transparency
 Can be persistent or non-persistent
 Can be transactional




                                                                                                                  A Progress Software
 8   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Topics




                                                                                                                 A Progress Software
9   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Topics




 One message goes to 0-to-many consumers
  based on the current subscribers
 Think like mailing lists or discussion forums
 Ideal for publishing business events
 Distributed observer pattern
 Allows one part of your system to notify anyone
  else who may be interested in an event




                                                                                                                  A Progress Software
10   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Queues




                                                                                                                  A Progress Software
11   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Queues




    Messages are load balanced across many consumers
    Each message goes to exactly one consumer
    Consumers compete for messages
    Its easy to browse and monitor queues
    Ideal for grid style applications




                                                                                                                   A Progress Software
12    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Challanges


 Create a general messaging platform
 Support variety of use-cases
     • Large number of clients
     • Large number of destinations
     • Slow consumers
 Provide enterprise feaures
     •    Security
     •    High availability
     •    Management
     •    etc




                                                                                                                      A Progress Software
13       Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control




                                                                                                                  A Progress Software
14   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                 FuseSource                    Company
                                                                                                                      A Progress Software
                                                                                                                      Company
Flow Control - Why?

 Dealing with deep queues
 Dealing with slow consumers
 We want to prevent broker from being flooded with
  messages
 We want to prevent broker running out of memory and
  other resources




                                                                                                                  A Progress Software
15   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - How?




 Message Cursors
 Producer Flow Control




                                                                                                                  A Progress Software
16   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - Cursors




                                                                                                                  A Progress Software
17   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - Store-based Cursor




                                                                                                                  A Progress Software
18   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - Non-persistent cursor




                                                                                                                  A Progress Software
19   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - Limits

                        Per destination
     <destinationPolicy>
           <policyMap>
             <policyEntries>
               <policyEntry queue=">" memoryLimit="10mb"/>
             </policyEntries>
           </policyMap>
     </destinationPolicy>

                       System settings
     <systemUsage>
       <systemUsage>
         <memoryUsage>
           <memoryUsage limit="256 mb" />
         </memoryUsage>
         <storeUsage>
           <storeUsage limit="100 gb" />
         </storeUsage>
         <tempUsage>
           <tempUsage limit="10 gb" />
         </tempUsage>
       </systemUsage>
     </systemUsage>
                                                                                                                    A Progress Software
20     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - Producer Flow Control

 Throttling producer speed to the speed of consumers




                                                                                                                  A Progress Software
21   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Flow Control - VM Cursor




     <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
       <pendingQueuePolicy>
         <vmQueueCursor/>
       </pendingQueuePolicy>
     </policyEntry>



                                                                                                                  A Progress Software
22   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Scaling




                                                                                                                  A Progress Software
23   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                 FuseSource                    Company
                                                                                                                      A Progress Software
                                                                                                                      Company
Scaling - Types




 Vertical scaling
 Horizontal scaling
 Traffic partitioning




                                                                                                                  A Progress Software
24   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling




     Increase load capacity using a single broker can handle.



     Problems:
     • Thread count
     • Memory usage
     • CPU usage




                                                                                                                    A Progress Software
25     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling - Threads




     What are threads used for
     • For Connections - Thread per Connection (blocking transport)
     • For Dispatching - Thread per Destination




                                                                                                                    A Progress Software
26     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling - Number of Connections




     Use non-blocking transport

     <transportConnectors>
       <transportConnector name="nio" uri="nio://0.0.0.0:61616"/>
     </<transportConnectors>



     Enables handling large number of clients




                                                                                                                    A Progress Software
27     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling - Number of Destinations




     Don’t use dedicated task runner

      ACTIVEMQ_OPTS="-Dorg.apache.activemq.UseDedicatedTaskRunner=false"



     Use optimized dispatch for queues
 <destinationPolicy>
       <policyMap>
         <policyEntries>
           <policyEntry topic=">" optimizedDispatch="true">
           ...
           </policyEntry>
         </policyEntries>
       </policyMap>
 </destinationPolicy>


                                                                                                                    A Progress Software
28     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling - Memory


 Give broker enough memory

     ACTIVEMQ_OPTS="-Xmx2048M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"



 Configure big enough memory usage
 <systemUsage>
   <systemUsage>
     <memoryUsage>
       <memoryUsage limit="1024 mb" />
     </memoryUsage>

       ...

   </systemUsage>
 </systemUsage>


                                                                                                                    A Progress Software
29     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling - CPU




 Disable tight encoding

 It uses more CPU to create smaller packets

 uri = "failover://(tcp://localhost:61616wireFormat.tightEncodingEnabled=false)";




                                                                                                                   A Progress Software
 30   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Vertical Scaling - Conclusion




     There is a limit to the scalability a single machine can
                               give




                                                                                                                   A Progress Software
31    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Horizontal Scaling


     Increase load capacity using networked brokers




  Concepts:
 Network of Broker




                                                                                                                    A Progress Software
32     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Horizontal Scaling - Network of Brokers




                                                                                                                  A Progress Software
33   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Horizontal Scaling - NOB Usage

                                                       Configuration

                <networkConnector name="broker1-broker2"
                    uri="static:(tcp://broker2:61617)"
                    dynamicOnly="true"
                    prefetchSize="1000"
                    conduitSubscriptions="true"
                    decreaseNetworkConsumerPriority="true"
                    suppressDuplicateTopicSubscriptions="true"
                    networkTTL="3">
                </networkConnector>



                                                          Connecting


      failover://(tcp://broker1:61616,tcp://broker2:61616)?randomize=true




                                                                                                                  A Progress Software
34   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Horizontal Scaling - Conclusion




 More latency in processing messages
 Beware of complex topologies




                                                                                                                  A Progress Software
35   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Hybrid Scaling

     Partition traffic to more non-connected brokers




                                                                                                                    A Progress Software
36     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Hybrid Scaling - Conclusion




 Pros
     • You can use all the tuning techniques used in Vertical scaling
     • Have better Horizontal scaleability than using Network Of
       Brokers (Less broker cross talk)
 Cons
     • Added complexity required on the end user Application




                                                                                                                   A Progress Software
37    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
High Availability




                                                                                                                  A Progress Software
38   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                 FuseSource                    Company
                                                                                                                      A Progress Software
                                                                                                                      Company
High Availability




 Pure Master/Slave
 JDBC Master/Slave
 Shared File System Master/Slave




                                                                                                                  A Progress Software
39   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Pure Master-Slave




                                                                                                                  A Progress Software
40   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Pure Master-Slave




 Shared nothing
 Fully replicated
     • All messages
     • All acknowledgements
     • All transactions
 Slave does not start any transports or network
  connections




                                                                                                                   A Progress Software
41    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
JDBC Master-Slave




                                                                                                                  A Progress Software
42   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
JDBC Master-Slave




    Extreme reliability – but not as fast
    Recommended if already using an enterprise database
    No restriction on number of slaves
    Simple configuration




                                                                                                                    A Progress Software
43     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Shared Storage Master-Slave




                                                                                                                  A Progress Software
44   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Shared Storage Master-Slave




    Recommended if you have a SAN
    No restriction on number of slaves
    Simple configuration
    N.B. – ensure file locking works – and times out – NFSv4
     good!




                                                                                                                    A Progress Software
45     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Future




                                                                                                                  A Progress Software
46   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.
                                                                                                 FuseSource                    Company
                                                                                                                      A Progress Software
                                                                                                                      Company
Future - ActiveMQ Apollo


 http://activemq.apache.org/apollo

 ActiveMQ 5.x reached scalability and performance
  limits with the current architecture

 New broker core




                                                                                                                  A Progress Software
47   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Future - ActiveMQ Apollo




    Reactor Based Thread Model
    Scala 2.8 Implementation
    Protocol Agnostic
    REST Based Management




                                                                                                                    A Progress Software
48     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Future - ActiveMQ Apollo Performance


                            http://hiramchirino.net/blog




                                          10 producers/10 consumers
                                          single topic
                                          using Stomp
                                          20 byte payload



                                                                                                                  A Progress Software
49   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Conclusions




    Dynamic community
    Leading in terms of messaging innovation
    Built for Enterprise
    Scalable, Good Performance, Reliable




                                                                                                                    A Progress Software
50     Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company
Questions?




 ActiveMQ Web sites:
     • http://activemq.apache.org/
     • http://fusesource.com/products/enterprise-activemq/


 Blog:
     • http://www.nighttale.net/


 Twitter:
     • http://twitter.com/dejanb
     • http://twitter.com/fusenews


                                                                                                                   A Progress Software
51    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   Company

Más contenido relacionado

La actualidad más candente

Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...
Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...
Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...
HostedbyConfluent
 

La actualidad más candente (20)

Postman: An Introduction for Developers
Postman: An Introduction for DevelopersPostman: An Introduction for Developers
Postman: An Introduction for Developers
 
nGrinder 3.0 : Load Test even kids can do
nGrinder 3.0 : Load Test even kids can donGrinder 3.0 : Load Test even kids can do
nGrinder 3.0 : Load Test even kids can do
 
Reactive programming with examples
Reactive programming with examplesReactive programming with examples
Reactive programming with examples
 
NGINX Installation and Tuning
NGINX Installation and TuningNGINX Installation and Tuning
NGINX Installation and Tuning
 
Web assembly: a brief overview
Web assembly: a brief overviewWeb assembly: a brief overview
Web assembly: a brief overview
 
RabbitMQ Operations
RabbitMQ OperationsRabbitMQ Operations
RabbitMQ Operations
 
IBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQIBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQ
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on Kubernetes
 
Postman An Introduction for Testers, October 26 2022.pptx
Postman An Introduction for Testers, October 26 2022.pptxPostman An Introduction for Testers, October 26 2022.pptx
Postman An Introduction for Testers, October 26 2022.pptx
 
Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...
Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...
Robinhood’s Kafkaproxy: Decoupling Kafka Consumer Logic from Application Busi...
 
Chaos Engineering for Docker
Chaos Engineering for DockerChaos Engineering for Docker
Chaos Engineering for Docker
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
Continuous Quality with Postman
Continuous Quality with PostmanContinuous Quality with Postman
Continuous Quality with Postman
 
What we've learned from running thousands of production RabbitMQ clusters - L...
What we've learned from running thousands of production RabbitMQ clusters - L...What we've learned from running thousands of production RabbitMQ clusters - L...
What we've learned from running thousands of production RabbitMQ clusters - L...
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
 
Kafka presentation
Kafka presentationKafka presentation
Kafka presentation
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise Platform
 

Similar a Advanced messaging with Apache ActiveMQ

Enterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQEnterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQ
Rob Davies
 
"Deploy. Sneller." Webinar Slides (Dutch webinar)
"Deploy. Sneller." Webinar Slides (Dutch webinar)"Deploy. Sneller." Webinar Slides (Dutch webinar)
"Deploy. Sneller." Webinar Slides (Dutch webinar)
XebiaLabs
 
Effective load testing_&_monitoring
Effective load testing_&_monitoringEffective load testing_&_monitoring
Effective load testing_&_monitoring
ganesh_barcamp
 

Similar a Advanced messaging with Apache ActiveMQ (20)

Enterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQEnterprise Integration Patterns with ActiveMQ
Enterprise Integration Patterns with ActiveMQ
 
Running Realistic Load Tests: Answers to the Most Important Questions - Yours!
Running Realistic Load Tests: Answers to the Most Important Questions - Yours!Running Realistic Load Tests: Answers to the Most Important Questions - Yours!
Running Realistic Load Tests: Answers to the Most Important Questions - Yours!
 
XebiaLabs Overview Slides
XebiaLabs Overview SlidesXebiaLabs Overview Slides
XebiaLabs Overview Slides
 
Build Powerful Apps Fast with Progress Rollbase
Build Powerful Apps Fast with Progress RollbaseBuild Powerful Apps Fast with Progress Rollbase
Build Powerful Apps Fast with Progress Rollbase
 
What Does Your Platform Do For You? by Karun Bakshi
What Does Your Platform Do For You? by Karun BakshiWhat Does Your Platform Do For You? by Karun Bakshi
What Does Your Platform Do For You? by Karun Bakshi
 
Continuous Delivery Summit, Washington D.C., 2015
Continuous Delivery Summit, Washington D.C., 2015Continuous Delivery Summit, Washington D.C., 2015
Continuous Delivery Summit, Washington D.C., 2015
 
Gpc ireland jan20 2010 v5
Gpc ireland jan20 2010 v5Gpc ireland jan20 2010 v5
Gpc ireland jan20 2010 v5
 
What Does Your Platform Do For You? by Karun Bakshi
What Does Your Platform Do For You? by Karun BakshiWhat Does Your Platform Do For You? by Karun Bakshi
What Does Your Platform Do For You? by Karun Bakshi
 
SAFe (Scaled Agile Framework) 5 mins overview - Roni Tamari
SAFe (Scaled Agile Framework) 5 mins overview - Roni TamariSAFe (Scaled Agile Framework) 5 mins overview - Roni Tamari
SAFe (Scaled Agile Framework) 5 mins overview - Roni Tamari
 
Windows 10 One Year Later: What’s Holding You Back?
Windows 10 One Year Later: What’s Holding You Back? Windows 10 One Year Later: What’s Holding You Back?
Windows 10 One Year Later: What’s Holding You Back?
 
2011 partner program update dec2011 v3
2011 partner program update dec2011 v32011 partner program update dec2011 v3
2011 partner program update dec2011 v3
 
Optimize DevOps and Agile Strategies with Deployment Automation
Optimize DevOps and Agile Strategies with Deployment AutomationOptimize DevOps and Agile Strategies with Deployment Automation
Optimize DevOps and Agile Strategies with Deployment Automation
 
"Deploy. Sneller." Webinar Slides (Dutch webinar)
"Deploy. Sneller." Webinar Slides (Dutch webinar)"Deploy. Sneller." Webinar Slides (Dutch webinar)
"Deploy. Sneller." Webinar Slides (Dutch webinar)
 
Delivering Eclipse Projects
Delivering Eclipse Projects Delivering Eclipse Projects
Delivering Eclipse Projects
 
Mobile Applications Testing: From Concepts to Practice
Mobile Applications Testing: From Concepts to PracticeMobile Applications Testing: From Concepts to Practice
Mobile Applications Testing: From Concepts to Practice
 
Raygain Information Technology Overview
Raygain Information Technology OverviewRaygain Information Technology Overview
Raygain Information Technology Overview
 
Cloud 2014: Top Five Best Practices for Your Application PaaS Audience
Cloud 2014: Top Five Best Practices for Your Application PaaS AudienceCloud 2014: Top Five Best Practices for Your Application PaaS Audience
Cloud 2014: Top Five Best Practices for Your Application PaaS Audience
 
Optimize continuous delivery of oracle fusion middleware applications
Optimize continuous delivery of oracle fusion middleware applicationsOptimize continuous delivery of oracle fusion middleware applications
Optimize continuous delivery of oracle fusion middleware applications
 
Oracle Solaris Build and Run Applications Better on 11.3
Oracle Solaris  Build and Run Applications Better on 11.3Oracle Solaris  Build and Run Applications Better on 11.3
Oracle Solaris Build and Run Applications Better on 11.3
 
Effective load testing_&_monitoring
Effective load testing_&_monitoringEffective load testing_&_monitoring
Effective load testing_&_monitoring
 

Más de dejanb

Scaling out eclipse hono
Scaling out eclipse honoScaling out eclipse hono
Scaling out eclipse hono
dejanb
 
Messaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQMessaging 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 actionApache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in action
dejanb
 

Más de dejanb (9)

How is this sausage made
How is this sausage madeHow is this sausage made
How is this sausage made
 
Messaging for the cloud
Messaging for the cloudMessaging for the cloud
Messaging for the cloud
 
Scaling out eclipse hono
Scaling out eclipse honoScaling out eclipse hono
Scaling out eclipse hono
 
Building Open Source IoT Cloud
Building Open Source IoT CloudBuilding Open Source IoT Cloud
Building Open Source IoT Cloud
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
 
Messaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQMessaging for Web and Mobile with Apache ActiveMQ
Messaging for Web and Mobile with Apache ActiveMQ
 
Introduction to ActiveMQ Apollo
Introduction to ActiveMQ ApolloIntroduction to ActiveMQ Apollo
Introduction to ActiveMQ Apollo
 
Deploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse FabricDeploying FuseMQ with Fuse Fabric
Deploying FuseMQ with Fuse Fabric
 
Apache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in actionApache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in action
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Advanced messaging with Apache ActiveMQ

  • 1. Advanced Messaging with Apache ActiveMQ Bosanac Dejan May 2011 A Progress Software 1 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 2. About me  Bosanac Dejan  Senior Software Engineer at FUSESource - http:// fusesource.com  Apache ActiveMQ committer and PMC member  Co-author of ActiveMQ in Action A Progress Software 2 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 3. What we are going to cover?  What is ActiveMQ  The Basics  Flow control  Scaling  High Availability  Future  Conclusion A Progress Software 3 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 4. What is ActiveMQ? A Progress Software 4 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 5. Apache ActiveMQ  Apache ActiveMQ • Leading Open Source messaging platform • Supported Java Standards: o JMS 1.1, J2EE 1.4, JCA 1.5 and XA  Reliable, high performance messaging • Out-performs many legacy proprietary message queues • Configurable for many different deployments  Multi-Protocol/Multi-Language Support A Progress Software 5 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 6. Background  ActiveMQ started in 2005 at CodeHaus  Moved to Apache Software Foundation in 2006  1,117,537 lines of code  24 committers  Now the most widely used open source messaging system on the planet A Progress Software 6 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 7. The Basics A Progress Software 7 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 8. Messaging is  Loosely coupled exchange of messages between applications  Location transparency  Can be persistent or non-persistent  Can be transactional A Progress Software 8 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 9. Topics A Progress Software 9 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 10. Topics  One message goes to 0-to-many consumers based on the current subscribers  Think like mailing lists or discussion forums  Ideal for publishing business events  Distributed observer pattern  Allows one part of your system to notify anyone else who may be interested in an event A Progress Software 10 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 11. Queues A Progress Software 11 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 12. Queues  Messages are load balanced across many consumers  Each message goes to exactly one consumer  Consumers compete for messages  Its easy to browse and monitor queues  Ideal for grid style applications A Progress Software 12 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 13. Challanges  Create a general messaging platform  Support variety of use-cases • Large number of clients • Large number of destinations • Slow consumers  Provide enterprise feaures • Security • High availability • Management • etc A Progress Software 13 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 14. Flow Control A Progress Software 14 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 15. Flow Control - Why?  Dealing with deep queues  Dealing with slow consumers  We want to prevent broker from being flooded with messages  We want to prevent broker running out of memory and other resources A Progress Software 15 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 16. Flow Control - How?  Message Cursors  Producer Flow Control A Progress Software 16 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 17. Flow Control - Cursors A Progress Software 17 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 18. Flow Control - Store-based Cursor A Progress Software 18 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 19. Flow Control - Non-persistent cursor A Progress Software 19 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 20. Flow Control - Limits Per destination <destinationPolicy> <policyMap> <policyEntries> <policyEntry queue=">" memoryLimit="10mb"/> </policyEntries> </policyMap> </destinationPolicy> System settings <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="256 mb" /> </memoryUsage> <storeUsage> <storeUsage limit="100 gb" /> </storeUsage> <tempUsage> <tempUsage limit="10 gb" /> </tempUsage> </systemUsage> </systemUsage> A Progress Software 20 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 21. Flow Control - Producer Flow Control  Throttling producer speed to the speed of consumers A Progress Software 21 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 22. Flow Control - VM Cursor <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy> </policyEntry> A Progress Software 22 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 23. Scaling A Progress Software 23 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 24. Scaling - Types  Vertical scaling  Horizontal scaling  Traffic partitioning A Progress Software 24 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 25. Vertical Scaling Increase load capacity using a single broker can handle. Problems: • Thread count • Memory usage • CPU usage A Progress Software 25 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 26. Vertical Scaling - Threads What are threads used for • For Connections - Thread per Connection (blocking transport) • For Dispatching - Thread per Destination A Progress Software 26 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 27. Vertical Scaling - Number of Connections Use non-blocking transport <transportConnectors> <transportConnector name="nio" uri="nio://0.0.0.0:61616"/> </<transportConnectors> Enables handling large number of clients A Progress Software 27 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 28. Vertical Scaling - Number of Destinations Don’t use dedicated task runner ACTIVEMQ_OPTS="-Dorg.apache.activemq.UseDedicatedTaskRunner=false" Use optimized dispatch for queues <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" optimizedDispatch="true"> ... </policyEntry> </policyEntries> </policyMap> </destinationPolicy> A Progress Software 28 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 29. Vertical Scaling - Memory  Give broker enough memory ACTIVEMQ_OPTS="-Xmx2048M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"  Configure big enough memory usage <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="1024 mb" /> </memoryUsage> ... </systemUsage> </systemUsage> A Progress Software 29 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 30. Vertical Scaling - CPU  Disable tight encoding It uses more CPU to create smaller packets uri = "failover://(tcp://localhost:61616wireFormat.tightEncodingEnabled=false)"; A Progress Software 30 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 31. Vertical Scaling - Conclusion There is a limit to the scalability a single machine can give A Progress Software 31 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 32. Horizontal Scaling Increase load capacity using networked brokers Concepts:  Network of Broker A Progress Software 32 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 33. Horizontal Scaling - Network of Brokers A Progress Software 33 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 34. Horizontal Scaling - NOB Usage Configuration <networkConnector name="broker1-broker2" uri="static:(tcp://broker2:61617)" dynamicOnly="true" prefetchSize="1000" conduitSubscriptions="true" decreaseNetworkConsumerPriority="true" suppressDuplicateTopicSubscriptions="true" networkTTL="3"> </networkConnector> Connecting failover://(tcp://broker1:61616,tcp://broker2:61616)?randomize=true A Progress Software 34 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 35. Horizontal Scaling - Conclusion  More latency in processing messages  Beware of complex topologies A Progress Software 35 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 36. Hybrid Scaling Partition traffic to more non-connected brokers A Progress Software 36 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 37. Hybrid Scaling - Conclusion  Pros • You can use all the tuning techniques used in Vertical scaling • Have better Horizontal scaleability than using Network Of Brokers (Less broker cross talk)  Cons • Added complexity required on the end user Application A Progress Software 37 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 38. High Availability A Progress Software 38 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 39. High Availability  Pure Master/Slave  JDBC Master/Slave  Shared File System Master/Slave A Progress Software 39 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 40. Pure Master-Slave A Progress Software 40 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 41. Pure Master-Slave  Shared nothing  Fully replicated • All messages • All acknowledgements • All transactions  Slave does not start any transports or network connections A Progress Software 41 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 42. JDBC Master-Slave A Progress Software 42 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 43. JDBC Master-Slave  Extreme reliability – but not as fast  Recommended if already using an enterprise database  No restriction on number of slaves  Simple configuration A Progress Software 43 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 44. Shared Storage Master-Slave A Progress Software 44 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 45. Shared Storage Master-Slave  Recommended if you have a SAN  No restriction on number of slaves  Simple configuration  N.B. – ensure file locking works – and times out – NFSv4 good! A Progress Software 45 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 46. Future A Progress Software 46 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. FuseSource Company A Progress Software Company
  • 47. Future - ActiveMQ Apollo  http://activemq.apache.org/apollo  ActiveMQ 5.x reached scalability and performance limits with the current architecture  New broker core A Progress Software 47 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 48. Future - ActiveMQ Apollo  Reactor Based Thread Model  Scala 2.8 Implementation  Protocol Agnostic  REST Based Management A Progress Software 48 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 49. Future - ActiveMQ Apollo Performance http://hiramchirino.net/blog 10 producers/10 consumers single topic using Stomp 20 byte payload A Progress Software 49 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 50. Conclusions  Dynamic community  Leading in terms of messaging innovation  Built for Enterprise  Scalable, Good Performance, Reliable A Progress Software 50 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company
  • 51. Questions?  ActiveMQ Web sites: • http://activemq.apache.org/ • http://fusesource.com/products/enterprise-activemq/  Blog: • http://www.nighttale.net/  Twitter: • http://twitter.com/dejanb • http://twitter.com/fusenews A Progress Software 51 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. Company