SlideShare a Scribd company logo
1 of 84
Enterprise Integration:
Patterns and Deployments with Apache ActiveMQ
Patterns and Deployments with Apache ActiveMQ




    Rob Davies
         CTO
    FuseSource
                                                                                                         A Progress Software Company
    July 2011Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.            A Progress Software Company
1    Copyright Ā© 2010
Your presenter is: Rob Davies


    ļ‚§   CTO at FuseSource - ā€œthe experts in open source integration and
        messagingā€    http://fusesource.com

    ļ‚§   Apache ActiveMQ, ServiceMix and Camel PMC member

    ļ‚§   Co-creator of ActiveMQ, ServiceMix and Camel

    ļ‚§   Co-author of ActiveMQ in Action:
                    ļ‚§        Chapter 5:ActiveMQ Message Store

                    ļ‚§        Chapter 10: Deploying ActiveMQ in the Enterprise

                    ļ‚§        Chapter 11: ActiveMQ Broker Features In Action

                    ļ‚§        Chapter 12: Advanced Client Options

                    ļ‚§        Chapter 13: Tuning ActiveMQ for Performance




        Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
2
FuseSource - the experts in open source integration and messaging


    FuseSource Sponsors the Apache Software Foundation




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
3
FuseSource: the Team that Wrote the Code


    Over 25 active committers on 11 Apache
    projects




    Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
4
Enterprise Integration Patterns


    ļ‚§ A Book by Gregor Hohpe and Bobby Woolf
    ļ‚§ Patterns and Recipes for common integration problems
    ļ‚§ Message Centric
    ļ‚§ Used as the basis for all the major integration products
    ļ‚§ Should be the the first thing to reference when starting
      an integration project
    ļ‚§ http://www.eaipatterns.com/




        Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
5
Why use Messaging ?


ļ‚§ Remote communication between applications
    ā€¢ different processes on the same machine
    ā€¢ different process on different machines in different locations
ļ‚§ Platform/language integration - heterogeneous support
ļ‚§ Asynchronous communication - de-coupling between
  producer and consumer (loose coupling)
ļ‚§ location transparency
ļ‚§ Fault tolerant communication
    ā€¢ guaranteed delivery
    ā€¢ once and only once delivery




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


ļ‚§ Top level Apache Software Foundation Project
ļ‚§ Wildly popular, high performance reliable message broker
    ā€¢ supports JMS 1.1, adding support for AMQP 1.0 and JMS 2.0
    ā€¢ Clustering and Fault Tolerance
    ā€¢ supports publish/subscribe, point to point, message groups, out of
      band messaging and streaming, distributed transactions
ļ‚§ Myriad of Connectivity options
    ā€¢ Native Java, C++ and .Net
    ā€¢ STOMP protocol extends reach to Ruby, JS, Perl, Python,PHP,
      ActionScript ...
ļ‚§ Embedded and standalone deployment options
    ā€¢ Pre-integrated with open source integration and application
      frameworks
    ā€¢ Deep integration with Spring Framework and JEE


    Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
7
Enterprise Integration




    Message Channels ...




    Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
8
Message Channels = JMS Destinations




    Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
9
Publish/Subscribe Channel (Topics)




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
10
Point-to-Point Channel (Queues)




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
11
Enterprise Integration:



 Message Routing ...




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
12
Message Routing: Destinations - ActiveMQ supports
Wildcards




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
13
Message Routing - selectors




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
14
Message Routing: Selectors - usually headers only




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
15
ActiveMQ also supports content based routing:




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
16
Destinations or Selectors ?


ļ‚§ Overhead to both destinations and Selectors
ļ‚§ Queues use more resources than Topics
ļ‚§ Selectors are OK providing thereā€™s always a consumer for a
  filtered message (ā€œStuck Messageā€ problem)
ļ‚§ In general use more destinations before using selectors
ļ‚§ If you need finer control, then use selectors




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
17
Enterprise Integration




     Types of Messages ...




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
18
Types of Message: Command




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
19
Types of Message: Document




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
20
Types of Message: Event




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
21
Enterprise Integration




     Message Integration -
     Push, Pull or both ?



     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
22
Push Model for Integration


ļ‚§ Typically uses a document message being sent as an event
     ā€¢ Information about a change (e.g. a price change) is an event
     ā€¢ Information about a change and the changed information - is an
       event/document combination




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
23
Push Model Using ActiveMQ for Scalability - FanOut




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
24
Push Model Using ActiveMQ for Scalability - FanOut
 configuration


ActiveMQ producer connection URI - will connect to all
brokers:
fanout:(static:(tcp://broker1:61616,tcp://broker2:61616))




ActiveMQ Consumers connection URI - will connect to
only one broker
failover:(tcp://broker1:61616,tcp://broker2:61616)




       Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
  25
Pull Model for Integration


ļ‚§ Three message types used
     ā€¢ Event message - to notify observers of changes
     ā€¢ Command message: - to request updated information
     ā€¢ Document message: - details of the change




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
26
Which model to use - Push or Pull ? - it depends :)


ļ‚§ Push model is good when:
     ā€¢ when all consumers want details of change
     ā€¢ Information (Document part) isnā€™t too large
ļ‚§ Push model is bad when:
     ā€¢ lots of consumers - but only a few want updated require updated
       information
ļ‚§ Pull model is good when:
     ā€¢ lots of consumers, only a few will be interested in the change
     ā€¢ flexibility in the implementation
ļ‚§ Pull model is bad when:
     ā€¢ need to reduce traffic - 3 messages vs 1 for push
     ā€¢ 2 Destinations vs 1 for push


     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
27
A Bad use of Pull:




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
28
Enterprise Integration




     Message Integration -
     Request/Reply



     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
29
Two way conversation: Request/Reply




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
30
Two way conversation: Request/Reply with JMS


ļ‚§ javax.jms has helper classes for Request/Reply pattern
     ā€¢ QueueRequestor
     ā€¢ TopicRequestor
ļ‚§ Limitations
     ā€¢    Requests have to be persistent
     ā€¢    Request canā€™t be transacted
     ā€¢    Requestor is synchronous
     ā€¢    Uses a temporary destination for response:
              ā€“ there maybe a network outage - loose response
              ā€“ you may want to load balance responses - so need a Queue




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
31
Two way conversation: With ActiveMQ


ļ‚§ Donā€™t use javax.jms has helper classes for Request/Reply
ļ‚§ Donā€™t use temporary Queues
ļ‚§ What Queues that should only live as long as a
  connection ?
     ā€¢ use timeToLive on messages
     ā€¢ enable garbage collection on destinations




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
32
Enterprise Integration




     Message Integration -
     Job Processing



     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
33
Messaging for scalable Job processing


ļ‚§ Distributes processing
ļ‚§ Scalable - multiple consumers of each queue
ļ‚§ Fault tolerant - processing can survive Processor outage




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
34
Enterprise Integration




     Deployment Pattern - Hub and
     Spoke




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
35
Geographically Dispersed Hub and Spoke




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
36
Geographically Dispersed Hub and Spoke - Challenges


ļ‚§ Need immediate time two way communication
  between remote office and head office
ļ‚§ remote office applications still need to work if head
  office is not contactable
ļ‚§ Network outage, or unreliable networks, need to be
  catered for




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
37
Geographically Dispersed Hub and Spoke - Solution




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
38
Best practices for ActiveMQ networks


ļ‚§ For large number of remote brokers - or when
  firewalls are an issue - use duplex networks - the
  remote broker establish the connection to the ā€œhead
  officeā€
ļ‚§ Use network filters - to cut down network chatter
ļ‚§ Consider using static includes on networks - if
  networks donā€™t need to be dynamic
ļ‚§ Use compression - especially over slow links
ļ‚§ Networks are fault tolerant - so can failover to a slave




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
39
Enterprise Integration




     Deployment Pattern - Failover
     between data centres ...




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
40
ActiveMQ use case - geographically dispersed data
centres




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
41
ActiveMQ Networks - using failover




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
42
ActiveMQ use case - geographically dispersed data
centres - redundant links

ļ‚§ Fully redundant inter-connected brokers
ļ‚§ If a network link dies - messages need to automatically
  routed another way
ļ‚§ Needs to work for both Queues and Topics




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
43
ActiveMQ use case - geographically dispersed data
centres - redundant links - continued

ļ‚§ Set networkTTL to 2
ļ‚§ Queues will automatically work
ļ‚§ Topics need extra configuration ...




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
44
ActiveMQ use case - geographically dispersed data centres -
redundant links - continued - support for topics
Enable duplicate subscriptions over the network:
<networkConnectors> <networkConnector uri="static:(tcp://brokerB:61617)" name="A-B"
networkTTL="2" suppressDuplicateTopicSubscriptions="false"> </networkConnector>
<networkConnector uri="static:(tcp://brokerC:61618)" name="A-C" networkTTL="2"
suppressDuplicateTopicSubscriptions="false">
</networkConnector> </networkConnectors>


Ensure every Topic message is only sent through one network
connection - the one with the highest priority:
  <destinationPolicy>
    <policyMap>
      <policyEntries>
        <policyEntry topic=">" enableAudit="true">
          <dispatchPolicy>
            <priorityNetworkDispatchPolicy/>
         </dispatchPolicy>
        </policyEntry>
     </policyEntries>
   </policyMap>
  </destinationPolicy


      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
 45
Enterprise Integration:




     What about other Enterprise
     Integration Patterns ?




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
46
Some Integration Patterns




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
47
What is Apache Camel ?


ļ‚§ A powerful open source Mediation Router/Integration
  Framework
ļ‚§ Based on Enterprise Integration Patterns
ļ‚§ 100 + integration components
ļ‚§ Designed to:
     ā€¢    have no container dependency
     ā€¢    but ... work very well with Apache ActiveMQ, ServiceMix and CXF
     ā€¢    Can integrate seamlessly with Spring
     ā€¢    Easily extendable




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
48
What is Apache Camel

ļ‚§ Camel and EIP




       Apache                                                                                                     WebSphereMQ
      ActiveMQ




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.         A Progress Software Company
49
What is Apache Camel


ļ‚§ Camel and EIP




 16   Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
 50
What is Apache Camel


ļ‚§ Camel and EIP




        from                                                        filter                                        send to
          A                                                        message                                           B




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.      A Progress Software Company
51
What is Apache Camel


ļ‚§ Camel and EIP




     from(A)                                          filter(predicate)                                            to(B)




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.     A Progress Software Company
52
What is Apache Camel


ļ‚§ Camel and EIP




     from(A)                                          .filter(isWidget)                                            .to(B)




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.      A Progress Software Company
53
What is Apache Camel


ļ‚§ Camel and EIP




                            from(A).filter(isWidget).to(B);




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
54
What is Apache Camel


ļ‚§ Camel and EIP




     isWidget = xpath("/quote/product = ā€˜widgetā€™");

     from(A).filter(isWidget).to(B);



      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
55
What is Apache Camel


 ļ‚§ Camel and EIP


Endpoint A = endpoint("activemq:queue:quote");
Endpoint B = endpoint("mq:quote");
Predicate isWidget = xpath("/quote/product = ā€˜widgetā€™");

from(A).filter(isWidget).to(B);




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
 56
What is Apache Camel


ļ‚§ Filter Route



public void configure() throws Exception {
    Endpoint A = endpoint("activemq:queue:quote");
    Endpoint B = endpoint("mq:quote");
    Predicate isWidget = xpath("/quote/product = ā€˜widgetā€™");

     from(A).filter(isWidget).to(B);
}




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
57
What is Apache Camel


ļ‚§ Filter Route - Java DSL

 import org.apache.camel.builder.RouteBuilder;

 public class FilterRoute extends RouteBuilder {
     public void configure() throws Exception {
       Endpoint A = endpoint("activemq:queue:quote");
       Endpoint B = endpoint("mq:quote");
       Predicate isWidget = xpath("/quote/product = ā€˜widgetā€™");

           from(A).filter(isWidget).to(B);
     }
 }




         Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
58
What is Apache Camel


ļ‚§ Filter Route - Java DSL

 import org.apache.camel.builder.RouteBuilder;

 public class FilterRoute extends RouteBuilder {

     public void configure() throws Exception {
       from("activemq:queue:quote")
         .filter().xpath("/quote/product =ā€˜widgetā€™")
           .to("mq:quote");
     }
 }




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
59
Enterprise Integration:




     Lets look at the Content based
     filter ...




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
60
What is Apache Camel


ļ‚§ Content Based Router




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
61
What is Apache Camel


ļ‚§ Content Based Router - XML DSL



 <camelContext>
   <route>
     <from uri="activemq:NewOrders"/>
     <choice>
       <when>
         <xpath>/order/product = 'widget'</xpath>
         <to uri="activemq:Orders.Widgets"/>
       </when>
       <otherwise>
         <to uri="activemq:Orders.Gadgets"/>
       </otherwise>
     </choice>
   </route>
 </camelContext>
     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
62
What is Apache Camel


ļ‚§ Content Based Router - Java DSL




     from("activemq:NewOrders")
       .choice()
         .when().xpath("/order/product = 'widget'")
           .to("activemq:Orders.Widget")
         .otherwise()
           .to("activemq:Orders.Gadget");




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
63
What is Apache Camel


ļ‚§ Endpoints as URIs
                                               use file instead




     from("file:inbox/orders")
       .choice()
         .when().xpath("/order/product = 'widget'")
           .to("activemq:Orders.Widget")
         .otherwise()
           .to("activemq:Orders.Gadget");




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
64
What is Apache Camel


ļ‚§ Endpoints as URIs
                                                                                                                   parameters




     from("file:inbox/orders?delete=true")
       .choice()
         .when().xpath("/order/product = 'widget'")
           .to("activemq:Orders.Widget")
         .otherwise()
           .to("activemq:Orders.Gadget");




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.                A Progress Software Company
65
Enterprise Integration:




     Apache Camel and ActiveMQ
     work well together ...




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
66
ActiveMQ with embedded Camel: Flexible and Performant




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
67
ActiveMQ with embedded Camel: import camel into
ActiveMQ broker config:




<beans>
Ā Ā Ā <brokerĀ brokerName="testBroker"Ā Ā xmlns="http://activemq.apache.org/schema/core">
Ā Ā Ā Ā <transportConnectors>
Ā Ā Ā Ā Ā Ā <transportConnectorĀ uri="tcp://localhost:61616"/>
Ā Ā Ā Ā </transportConnectors>
Ā Ā </broker>
Ā Ā <importĀ resource="camel.xml"/>
</beans>




      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
 68
ActiveMQ with embedded Camel: Setup Camel Context in
usual way



<camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from uri="activemq:queue:test.queue"/>
        <choice>
             <when>
                 <xpath>$foo = 'bar'</xpath>
                 <to uri="activemq:topic:topic.bar"/>
             </when>
             <when>
                 <xpath>$foo = 'cheese'</xpath>
                 <to uri="activemq:topic:topic.cheese"/>
             </when>
             <otherwise>
                 <to uri="activemq:topic:topic.all"/>
             </otherwise>
        </choice>
    </route>
</camelContext>




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
69
Enterprise Integration:




     Lets look at some challenges
     for messaging




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
70
Messaging Challenges



          ļ‚§ Scalability
                    ā€¢ Vertical scaling - how do we support a 100,000 destinations?
                    ā€¢ Horizontal Scaling - how can we linear scale greater than
                      100k destinations ?
          ļ‚§ Performance - everything needs to be faster -
            ActiveMQ - should be the fastest open source
            messaging
          ļ‚§ Continuous availability (active active clustering)
          ļ‚§ Protocol support - thereā€™s a range of choices -
            ActiveMQ should support them.


     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
71
CERN Large Hadron Collider




ļ‚§    Worlds largest and most powerful particle accelerator
ļ‚§    Currently 10 different Collider Experiments
ļ‚§    Budget of $9 billion
ļ‚§    30G/s optical network
         Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
    72
CERN Large Hadron Collider




ļ‚§        Produces 15 petabytes of data annually
ļ‚§        WLCG ā€“ 34 different countries
ļ‚§        Lots of Data ā€“ lots of destinations
ļ‚§        Requires next generation messaging to cope with information demand
           Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
    73
Need new Messaging Architecture

ļ‚§ Extreme throughput
ļ‚§ Scalable to millions of
  Dynamic Destinations
ļ‚§ Extensive protocol support
ļ‚§ Scale to x100k connections




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
74
Introducing ActiveMQ Apollo


     ļ‚§    Scala based core for very fast, scalable dispatching
     ļ‚§    modular design ā€“ independent lifecycle support
     ļ‚§    Enhanced Queues
     ļ‚§    More Protocols
     ļ‚§    Richer REST based Management
     ļ‚§    Intelligent Clustering




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


     ļ‚§ Based on Grand Central Dispatch (from OS X)
     ļ‚§ Event based ā€“ supports both reactor and proactor
       patterns
     ļ‚§ Uses fixed size thread pool ā€“ to match number of cores
       available
     ļ‚§ Reduces Thread contention - tries to use same thread
       and scales to very large connections
     ļ‚§ Handles millions of messages per second




       Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
76
More protocols than OpenWire and STOMP

     ļ‚§ MQTT
      ā€¢ IBM developed open protocol- supported by WebsphereMQ, Mosquitto and
        now Apollo
      ā€¢ Publish/Subscribe and Queues (version 5 spec)
      ā€¢ Designed to be used from embedded devices all the way up to application
        stacks
     ļ‚§ Beanstalk
      ā€¢    Short lived tasks
      ā€¢    sender needs to take action if a job is not consumed
      ā€¢    sender needs to know job is on the Queue
      ā€¢    very scalable
     ļ‚§ AMQP 1.0
      ā€¢    First Enterprise Version
      ā€¢    supports distributed transactions
      ā€¢    supports reliable messaging
      ā€¢    Flow Control should now work
      Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
77
Automatic Destination Partioning (clustering)


     ļ‚§    Uniform load across multiple brokers
     ļ‚§    Clients automatically connect to the correct broker(s)
     ļ‚§    Massive scalability
     ļ‚§    Reduce network hops




         Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
78
What about performance ?




     Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
79
FuseSource Subscription = Long Term Success

         SupportĀ 
         ā€¢Enterprise-classĀ 24x7Ā coverage
         ā€¢GlobalĀ organization
         ā€¢Mission-critical
         integrationĀ expertise                                                                                      InfluenceĀ 
         ā€¢UpdatesĀ andĀ migration                                                                                     ā€¢ProductĀ roadmaps
         assistance
                                                                                                                    ā€¢PlanningĀ processes
Tools                                                                                                               ā€¢ConduitĀ toĀ Apache
ā€¢Development
ā€¢Operations
ā€¢Management
ā€¢Performance
ā€¢Documentation


       Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.          A Progress Software Company
  80
FuseSource Knows How To Build Enterprise Apps

  HelpĀ throughoutĀ theĀ softwareĀ developmentĀ lifecycleā€¦


                                                          PilotĀ /Ā 
   Investigation                                                                                     Development            Production
                                                           PoC



         GetĀ started                                      TryĀ itĀ out                                       BuildĀ right   DeployĀ safely
   ā€¢trainingĀ videos                           ā€¢techĀ overviewsĀ                     ā€¢dev.Ā subscription ā€¢prof.Ā subscription
   ā€¢webinars                                  ā€¢training                           ā€¢arch.Ā workshop ā€¢healthĀ checkĀ 
   ā€¢tutorials                                 ā€¢projectĀ planning                   ā€¢bestĀ practices    ā€¢perf.Ā workshop
   ā€¢documentation                             ā€¢pilotĀ workshop                     ā€¢QoSĀ               ā€¢HAĀ workshop
   ā€¢whiteĀ papers                              ā€¢pilotĀ subscriptionĀ                 development        ā€¢training
                                                                                  ā€¢training
AvailableĀ forĀ Free                                                         FuseSourceĀ PaidĀ Engagement

           Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.      A Progress Software Company
    81
FuseSource Track Record


100ā€™s millions+                                                    Transactions every day running on Fuse


      200,000+                                                     Downloads per month


           200+                                                     Customers and growing rapidly


        100%+                                                       Rapid growth of FuseSource for past 3 years


          24 hr                                                     Enterprise Support every day


            25+                                                     Apache Committers and Contributors


            15+                                                     Years of Enterprise Integration experience



                                        #1
                                                                    Number one provider of
                                                                    Open Source Integration and Messaging
                                                                    products and services


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


NoĀ vendorĀ lock-in
   FreeĀ toĀ redistribute
      EnterpriseĀ classā€¦ā€¦..                                                                                        A Progress Software Company
     Copyright Ā© 2010 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.            A Progress Software Company
83
Enterprise ActiveMQ - More Information:



     ļ‚§    http://fusesource.com/
     ļ‚§    http://activemq.apache.org/
     ļ‚§    http://camel.apache.org/
     ļ‚§    http://activemq.apache.org/apollo/




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

More Related Content

What's hot

Scaling Push Messaging for Millions of Netflix Devices
Scaling Push Messaging for Millions of Netflix DevicesScaling Push Messaging for Millions of Netflix Devices
Scaling Push Messaging for Millions of Netflix DevicesSusheel Aroskar
Ā 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaAIMDek Technologies
Ā 
Getting Started with Confluent Schema Registry
Getting Started with Confluent Schema RegistryGetting Started with Confluent Schema Registry
Getting Started with Confluent Schema Registryconfluent
Ā 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS NATS
Ā 
WSO2 ESB Integration with REST
WSO2 ESB Integration with RESTWSO2 ESB Integration with REST
WSO2 ESB Integration with RESTWSO2
Ā 
Introduction to NGINX web server
Introduction to NGINX web serverIntroduction to NGINX web server
Introduction to NGINX web serverMd Waresul Islam
Ā 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90minsLarry Cai
Ā 
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...HostedbyConfluent
Ā 
NGINX Installation and Tuning
NGINX Installation and TuningNGINX Installation and Tuning
NGINX Installation and TuningNGINX, Inc.
Ā 
Deep dive into highly available open stack architecture openstack summit va...
Deep dive into highly available open stack architecture   openstack summit va...Deep dive into highly available open stack architecture   openstack summit va...
Deep dive into highly available open stack architecture openstack summit va...Arthur Berezin
Ā 
NGINX: Basics and Best Practices EMEA
NGINX: Basics and Best Practices EMEANGINX: Basics and Best Practices EMEA
NGINX: Basics and Best Practices EMEANGINX, Inc.
Ā 
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...DataWorks Summit
Ā 
Real time stock processing with apache nifi, apache flink and apache kafka
Real time stock processing with apache nifi, apache flink and apache kafkaReal time stock processing with apache nifi, apache flink and apache kafka
Real time stock processing with apache nifi, apache flink and apache kafkaTimothy Spann
Ā 
Oracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewOracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewKris Rice
Ā 
Soap web service
Soap web serviceSoap web service
Soap web serviceNITT, KAMK
Ā 
IBM Datapower Security Scenarios - Using JWT to secure microservices
IBM Datapower Security Scenarios - Using JWT  to secure microservicesIBM Datapower Security Scenarios - Using JWT  to secure microservices
IBM Datapower Security Scenarios - Using JWT to secure microservicessandipg123
Ā 
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...DataWorks Summit
Ā 

What's hot (20)

Scaling Push Messaging for Millions of Netflix Devices
Scaling Push Messaging for Millions of Netflix DevicesScaling Push Messaging for Millions of Netflix Devices
Scaling Push Messaging for Millions of Netflix Devices
Ā 
Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
Ā 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
Ā 
Getting Started with Confluent Schema Registry
Getting Started with Confluent Schema RegistryGetting Started with Confluent Schema Registry
Getting Started with Confluent Schema Registry
Ā 
Kafka 101
Kafka 101Kafka 101
Kafka 101
Ā 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS
Ā 
WSO2 ESB Integration with REST
WSO2 ESB Integration with RESTWSO2 ESB Integration with REST
WSO2 ESB Integration with REST
Ā 
Introduction to NGINX web server
Introduction to NGINX web serverIntroduction to NGINX web server
Introduction to NGINX web server
Ā 
NGINX Plus on AWS
NGINX Plus on AWSNGINX Plus on AWS
NGINX Plus on AWS
Ā 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
Ā 
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
6 Nines: How Stripe keeps Kafka highly-available across the globe with Donny ...
Ā 
NGINX Installation and Tuning
NGINX Installation and TuningNGINX Installation and Tuning
NGINX Installation and Tuning
Ā 
Deep dive into highly available open stack architecture openstack summit va...
Deep dive into highly available open stack architecture   openstack summit va...Deep dive into highly available open stack architecture   openstack summit va...
Deep dive into highly available open stack architecture openstack summit va...
Ā 
NGINX: Basics and Best Practices EMEA
NGINX: Basics and Best Practices EMEANGINX: Basics and Best Practices EMEA
NGINX: Basics and Best Practices EMEA
Ā 
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Ā 
Real time stock processing with apache nifi, apache flink and apache kafka
Real time stock processing with apache nifi, apache flink and apache kafkaReal time stock processing with apache nifi, apache flink and apache kafka
Real time stock processing with apache nifi, apache flink and apache kafka
Ā 
Oracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ OverviewOracle REST Data Services Best Practices/ Overview
Oracle REST Data Services Best Practices/ Overview
Ā 
Soap web service
Soap web serviceSoap web service
Soap web service
Ā 
IBM Datapower Security Scenarios - Using JWT to secure microservices
IBM Datapower Security Scenarios - Using JWT  to secure microservicesIBM Datapower Security Scenarios - Using JWT  to secure microservices
IBM Datapower Security Scenarios - Using JWT to secure microservices
Ā 
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Ā 

Similar to Enterprise Integration Patterns with ActiveMQ

MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...Jitendra Bafna
Ā 
Vasudevan_Bhaskar.pdf
Vasudevan_Bhaskar.pdfVasudevan_Bhaskar.pdf
Vasudevan_Bhaskar.pdfssuser57cef8
Ā 
Firewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data accessFirewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data accessSumit Sarkar
Ā 
Advanced messaging with Apache ActiveMQ
Advanced messaging with Apache ActiveMQAdvanced messaging with Apache ActiveMQ
Advanced messaging with Apache ActiveMQdejanb
Ā 
Big Data Fundamentals 6.6.18
Big Data Fundamentals 6.6.18Big Data Fundamentals 6.6.18
Big Data Fundamentals 6.6.18Cloudera, Inc.
Ā 
Big Data Fundamentals
Big Data FundamentalsBig Data Fundamentals
Big Data FundamentalsCloudera, Inc.
Ā 
Application Lifecycle Management for Multivalue Customers
Application Lifecycle Management for Multivalue CustomersApplication Lifecycle Management for Multivalue Customers
Application Lifecycle Management for Multivalue CustomersRocket Software
Ā 
Integrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelIntegrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelJustin Reock
Ā 
Securely Scaling Agile Software Delivery: Traceability, Visibility and Colla...
Securely Scaling Agile Software Delivery:  Traceability, Visibility and Colla...Securely Scaling Agile Software Delivery:  Traceability, Visibility and Colla...
Securely Scaling Agile Software Delivery: Traceability, Visibility and Colla...Kevin Hancock
Ā 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youRogue Wave Software
Ā 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessEd Burns
Ā 
A proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionA proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionCollabNet
Ā 
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStackAccelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStackBob Sokol
Ā 
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 AudienceRuma Sanyal
Ā 
Oracle Access Management - Customer presentation
Oracle Access Management - Customer presentation   Oracle Access Management - Customer presentation
Oracle Access Management - Customer presentation Delivery Centric
Ā 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery AutomationIl paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery AutomationHP Enterprise Italia
Ā 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015Edward Burns
Ā 

Similar to Enterprise Integration Patterns with ActiveMQ (20)

MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
Ā 
Vasudevan_Bhaskar.pdf
Vasudevan_Bhaskar.pdfVasudevan_Bhaskar.pdf
Vasudevan_Bhaskar.pdf
Ā 
Firewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data accessFirewall friendly pipeline for secure data access
Firewall friendly pipeline for secure data access
Ā 
Advanced messaging with Apache ActiveMQ
Advanced messaging with Apache ActiveMQAdvanced messaging with Apache ActiveMQ
Advanced messaging with Apache ActiveMQ
Ā 
Enterprise Agile at Lockheed Martin - 4th February 2014
Enterprise Agile at Lockheed Martin - 4th February 2014Enterprise Agile at Lockheed Martin - 4th February 2014
Enterprise Agile at Lockheed Martin - 4th February 2014
Ā 
Big Data Fundamentals 6.6.18
Big Data Fundamentals 6.6.18Big Data Fundamentals 6.6.18
Big Data Fundamentals 6.6.18
Ā 
Big Data Fundamentals
Big Data FundamentalsBig Data Fundamentals
Big Data Fundamentals
Ā 
Application Lifecycle Management for Multivalue Customers
Application Lifecycle Management for Multivalue CustomersApplication Lifecycle Management for Multivalue Customers
Application Lifecycle Management for Multivalue Customers
Ā 
02 basics
02 basics02 basics
02 basics
Ā 
Integrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelIntegrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and Camel
Ā 
Securely Scaling Agile Software Delivery: Traceability, Visibility and Colla...
Securely Scaling Agile Software Delivery:  Traceability, Visibility and Colla...Securely Scaling Agile Software Delivery:  Traceability, Visibility and Colla...
Securely Scaling Agile Software Delivery: Traceability, Visibility and Colla...
Ā 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for you
Ā 
Oracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with LessOracle WebLogic Server 12.2.1 Do More with Less
Oracle WebLogic Server 12.2.1 Do More with Less
Ā 
A proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversionA proven path for migrating from clearcase to git and or subversion
A proven path for migrating from clearcase to git and or subversion
Ā 
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStackAccelerating the Software Delivery Pipelinewith Mirantis OpenStack
Accelerating the Software Delivery Pipelinewith Mirantis OpenStack
Ā 
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
Ā 
Oracle Access Management - Customer presentation
Oracle Access Management - Customer presentation   Oracle Access Management - Customer presentation
Oracle Access Management - Customer presentation
Ā 
Il paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery AutomationIl paradigma DevOps e Continuous Delivery Automation
Il paradigma DevOps e Continuous Delivery Automation
Ā 
Em13c features- HotSos 2016
Em13c features- HotSos 2016Em13c features- HotSos 2016
Em13c features- HotSos 2016
Ā 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
Ā 

More from Rob Davies

Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the CloudRob Davies
Ā 
Messaging For the Cloud and Microservices
Messaging For the Cloud and MicroservicesMessaging For the Cloud and Microservices
Messaging For the Cloud and MicroservicesRob Davies
Ā 
Fabric8 mq
Fabric8 mqFabric8 mq
Fabric8 mqRob Davies
Ā 
Connecting applicationswitha mq
Connecting applicationswitha mqConnecting applicationswitha mq
Connecting applicationswitha mqRob Davies
Ā 
Fuse overview
Fuse overviewFuse overview
Fuse overviewRob Davies
Ā 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesRob Davies
Ā 
How opensourceworks
How opensourceworksHow opensourceworks
How opensourceworksRob Davies
Ā 

More from Rob Davies (7)

Integration in the Cloud
Integration in the CloudIntegration in the Cloud
Integration in the Cloud
Ā 
Messaging For the Cloud and Microservices
Messaging For the Cloud and MicroservicesMessaging For the Cloud and Microservices
Messaging For the Cloud and Microservices
Ā 
Fabric8 mq
Fabric8 mqFabric8 mq
Fabric8 mq
Ā 
Connecting applicationswitha mq
Connecting applicationswitha mqConnecting applicationswitha mq
Connecting applicationswitha mq
Ā 
Fuse overview
Fuse overviewFuse overview
Fuse overview
Ā 
OSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application BundlesOSGi made simple - Fuse Application Bundles
OSGi made simple - Fuse Application Bundles
Ā 
How opensourceworks
How opensourceworksHow opensourceworks
How opensourceworks
Ā 

Recently uploaded

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...gurkirankumar98700
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
Ā 
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...Martijn de Jong
Ā 
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 organizationRadu Cotescu
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜RTylerCroy
Ā 
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 2024The Digital Insurer
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
Ā 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
Ā 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
Ā 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
Ā 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
Ā 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 
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 BrazilV3cube
Ā 

Recently uploaded (20)

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service šŸø 8923113531 šŸŽ° Avail...
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Ā 
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
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜
Ā 
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]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Ā 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Ā 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Ā 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Ā 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Ā 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Ā 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Ā 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 
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
Ā 

Enterprise Integration Patterns with ActiveMQ

  • 1. Enterprise Integration: Patterns and Deployments with Apache ActiveMQ Patterns and Deployments with Apache ActiveMQ Rob Davies CTO FuseSource A Progress Software Company July 2011Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 1 Copyright Ā© 2010
  • 2. Your presenter is: Rob Davies ļ‚§ CTO at FuseSource - ā€œthe experts in open source integration and messagingā€ http://fusesource.com ļ‚§ Apache ActiveMQ, ServiceMix and Camel PMC member ļ‚§ Co-creator of ActiveMQ, ServiceMix and Camel ļ‚§ Co-author of ActiveMQ in Action: ļ‚§ Chapter 5:ActiveMQ Message Store ļ‚§ Chapter 10: Deploying ActiveMQ in the Enterprise ļ‚§ Chapter 11: ActiveMQ Broker Features In Action ļ‚§ Chapter 12: Advanced Client Options ļ‚§ Chapter 13: Tuning ActiveMQ for Performance Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 2
  • 3. FuseSource - the experts in open source integration and messaging FuseSource Sponsors the Apache Software Foundation Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 3
  • 4. FuseSource: the Team that Wrote the Code Over 25 active committers on 11 Apache projects Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 4
  • 5. Enterprise Integration Patterns ļ‚§ A Book by Gregor Hohpe and Bobby Woolf ļ‚§ Patterns and Recipes for common integration problems ļ‚§ Message Centric ļ‚§ Used as the basis for all the major integration products ļ‚§ Should be the the first thing to reference when starting an integration project ļ‚§ http://www.eaipatterns.com/ Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 5
  • 6. Why use Messaging ? ļ‚§ Remote communication between applications ā€¢ different processes on the same machine ā€¢ different process on different machines in different locations ļ‚§ Platform/language integration - heterogeneous support ļ‚§ Asynchronous communication - de-coupling between producer and consumer (loose coupling) ļ‚§ location transparency ļ‚§ Fault tolerant communication ā€¢ guaranteed delivery ā€¢ once and only once delivery Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 6
  • 7. What is Apache ActiveMQ ? ļ‚§ Top level Apache Software Foundation Project ļ‚§ Wildly popular, high performance reliable message broker ā€¢ supports JMS 1.1, adding support for AMQP 1.0 and JMS 2.0 ā€¢ Clustering and Fault Tolerance ā€¢ supports publish/subscribe, point to point, message groups, out of band messaging and streaming, distributed transactions ļ‚§ Myriad of Connectivity options ā€¢ Native Java, C++ and .Net ā€¢ STOMP protocol extends reach to Ruby, JS, Perl, Python,PHP, ActionScript ... ļ‚§ Embedded and standalone deployment options ā€¢ Pre-integrated with open source integration and application frameworks ā€¢ Deep integration with Spring Framework and JEE Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 7
  • 8. Enterprise Integration Message Channels ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 8
  • 9. Message Channels = JMS Destinations Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 9
  • 10. Publish/Subscribe Channel (Topics) Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 10
  • 11. Point-to-Point Channel (Queues) Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 11
  • 12. Enterprise Integration: Message Routing ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 12
  • 13. Message Routing: Destinations - ActiveMQ supports Wildcards Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 13
  • 14. Message Routing - selectors Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 14
  • 15. Message Routing: Selectors - usually headers only Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 15
  • 16. ActiveMQ also supports content based routing: Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 16
  • 17. Destinations or Selectors ? ļ‚§ Overhead to both destinations and Selectors ļ‚§ Queues use more resources than Topics ļ‚§ Selectors are OK providing thereā€™s always a consumer for a filtered message (ā€œStuck Messageā€ problem) ļ‚§ In general use more destinations before using selectors ļ‚§ If you need finer control, then use selectors Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 17
  • 18. Enterprise Integration Types of Messages ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 18
  • 19. Types of Message: Command Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 19
  • 20. Types of Message: Document Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 20
  • 21. Types of Message: Event Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 21
  • 22. Enterprise Integration Message Integration - Push, Pull or both ? Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 22
  • 23. Push Model for Integration ļ‚§ Typically uses a document message being sent as an event ā€¢ Information about a change (e.g. a price change) is an event ā€¢ Information about a change and the changed information - is an event/document combination Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 23
  • 24. Push Model Using ActiveMQ for Scalability - FanOut Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 24
  • 25. Push Model Using ActiveMQ for Scalability - FanOut configuration ActiveMQ producer connection URI - will connect to all brokers: fanout:(static:(tcp://broker1:61616,tcp://broker2:61616)) ActiveMQ Consumers connection URI - will connect to only one broker failover:(tcp://broker1:61616,tcp://broker2:61616) Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 25
  • 26. Pull Model for Integration ļ‚§ Three message types used ā€¢ Event message - to notify observers of changes ā€¢ Command message: - to request updated information ā€¢ Document message: - details of the change Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 26
  • 27. Which model to use - Push or Pull ? - it depends :) ļ‚§ Push model is good when: ā€¢ when all consumers want details of change ā€¢ Information (Document part) isnā€™t too large ļ‚§ Push model is bad when: ā€¢ lots of consumers - but only a few want updated require updated information ļ‚§ Pull model is good when: ā€¢ lots of consumers, only a few will be interested in the change ā€¢ flexibility in the implementation ļ‚§ Pull model is bad when: ā€¢ need to reduce traffic - 3 messages vs 1 for push ā€¢ 2 Destinations vs 1 for push Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 27
  • 28. A Bad use of Pull: Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 28
  • 29. Enterprise Integration Message Integration - Request/Reply Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 29
  • 30. Two way conversation: Request/Reply Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 30
  • 31. Two way conversation: Request/Reply with JMS ļ‚§ javax.jms has helper classes for Request/Reply pattern ā€¢ QueueRequestor ā€¢ TopicRequestor ļ‚§ Limitations ā€¢ Requests have to be persistent ā€¢ Request canā€™t be transacted ā€¢ Requestor is synchronous ā€¢ Uses a temporary destination for response: ā€“ there maybe a network outage - loose response ā€“ you may want to load balance responses - so need a Queue Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 31
  • 32. Two way conversation: With ActiveMQ ļ‚§ Donā€™t use javax.jms has helper classes for Request/Reply ļ‚§ Donā€™t use temporary Queues ļ‚§ What Queues that should only live as long as a connection ? ā€¢ use timeToLive on messages ā€¢ enable garbage collection on destinations Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 32
  • 33. Enterprise Integration Message Integration - Job Processing Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 33
  • 34. Messaging for scalable Job processing ļ‚§ Distributes processing ļ‚§ Scalable - multiple consumers of each queue ļ‚§ Fault tolerant - processing can survive Processor outage Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 34
  • 35. Enterprise Integration Deployment Pattern - Hub and Spoke Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 35
  • 36. Geographically Dispersed Hub and Spoke Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 36
  • 37. Geographically Dispersed Hub and Spoke - Challenges ļ‚§ Need immediate time two way communication between remote office and head office ļ‚§ remote office applications still need to work if head office is not contactable ļ‚§ Network outage, or unreliable networks, need to be catered for Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 37
  • 38. Geographically Dispersed Hub and Spoke - Solution Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 38
  • 39. Best practices for ActiveMQ networks ļ‚§ For large number of remote brokers - or when firewalls are an issue - use duplex networks - the remote broker establish the connection to the ā€œhead officeā€ ļ‚§ Use network filters - to cut down network chatter ļ‚§ Consider using static includes on networks - if networks donā€™t need to be dynamic ļ‚§ Use compression - especially over slow links ļ‚§ Networks are fault tolerant - so can failover to a slave Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 39
  • 40. Enterprise Integration Deployment Pattern - Failover between data centres ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 40
  • 41. ActiveMQ use case - geographically dispersed data centres Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 41
  • 42. ActiveMQ Networks - using failover Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 42
  • 43. ActiveMQ use case - geographically dispersed data centres - redundant links ļ‚§ Fully redundant inter-connected brokers ļ‚§ If a network link dies - messages need to automatically routed another way ļ‚§ Needs to work for both Queues and Topics Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 43
  • 44. ActiveMQ use case - geographically dispersed data centres - redundant links - continued ļ‚§ Set networkTTL to 2 ļ‚§ Queues will automatically work ļ‚§ Topics need extra configuration ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 44
  • 45. ActiveMQ use case - geographically dispersed data centres - redundant links - continued - support for topics Enable duplicate subscriptions over the network: <networkConnectors> <networkConnector uri="static:(tcp://brokerB:61617)" name="A-B" networkTTL="2" suppressDuplicateTopicSubscriptions="false"> </networkConnector> <networkConnector uri="static:(tcp://brokerC:61618)" name="A-C" networkTTL="2" suppressDuplicateTopicSubscriptions="false"> </networkConnector> </networkConnectors> Ensure every Topic message is only sent through one network connection - the one with the highest priority: <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" enableAudit="true"> <dispatchPolicy> <priorityNetworkDispatchPolicy/> </dispatchPolicy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 45
  • 46. Enterprise Integration: What about other Enterprise Integration Patterns ? Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 46
  • 47. Some Integration Patterns Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 47
  • 48. What is Apache Camel ? ļ‚§ A powerful open source Mediation Router/Integration Framework ļ‚§ Based on Enterprise Integration Patterns ļ‚§ 100 + integration components ļ‚§ Designed to: ā€¢ have no container dependency ā€¢ but ... work very well with Apache ActiveMQ, ServiceMix and CXF ā€¢ Can integrate seamlessly with Spring ā€¢ Easily extendable Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 48
  • 49. What is Apache Camel ļ‚§ Camel and EIP Apache WebSphereMQ ActiveMQ Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 49
  • 50. What is Apache Camel ļ‚§ Camel and EIP 16 Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 50
  • 51. What is Apache Camel ļ‚§ Camel and EIP from filter send to A message B Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 51
  • 52. What is Apache Camel ļ‚§ Camel and EIP from(A) filter(predicate) to(B) Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 52
  • 53. What is Apache Camel ļ‚§ Camel and EIP from(A) .filter(isWidget) .to(B) Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 53
  • 54. What is Apache Camel ļ‚§ Camel and EIP from(A).filter(isWidget).to(B); Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 54
  • 55. What is Apache Camel ļ‚§ Camel and EIP isWidget = xpath("/quote/product = ā€˜widgetā€™"); from(A).filter(isWidget).to(B); Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 55
  • 56. What is Apache Camel ļ‚§ Camel and EIP Endpoint A = endpoint("activemq:queue:quote"); Endpoint B = endpoint("mq:quote"); Predicate isWidget = xpath("/quote/product = ā€˜widgetā€™"); from(A).filter(isWidget).to(B); Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 56
  • 57. What is Apache Camel ļ‚§ Filter Route public void configure() throws Exception { Endpoint A = endpoint("activemq:queue:quote"); Endpoint B = endpoint("mq:quote"); Predicate isWidget = xpath("/quote/product = ā€˜widgetā€™"); from(A).filter(isWidget).to(B); } Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 57
  • 58. What is Apache Camel ļ‚§ Filter Route - Java DSL import org.apache.camel.builder.RouteBuilder; public class FilterRoute extends RouteBuilder { public void configure() throws Exception { Endpoint A = endpoint("activemq:queue:quote"); Endpoint B = endpoint("mq:quote"); Predicate isWidget = xpath("/quote/product = ā€˜widgetā€™"); from(A).filter(isWidget).to(B); } } Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 58
  • 59. What is Apache Camel ļ‚§ Filter Route - Java DSL import org.apache.camel.builder.RouteBuilder; public class FilterRoute extends RouteBuilder { public void configure() throws Exception { from("activemq:queue:quote") .filter().xpath("/quote/product =ā€˜widgetā€™") .to("mq:quote"); } } Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 59
  • 60. Enterprise Integration: Lets look at the Content based filter ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 60
  • 61. What is Apache Camel ļ‚§ Content Based Router Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 61
  • 62. What is Apache Camel ļ‚§ Content Based Router - XML DSL <camelContext> <route> <from uri="activemq:NewOrders"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:Orders.Widgets"/> </when> <otherwise> <to uri="activemq:Orders.Gadgets"/> </otherwise> </choice> </route> </camelContext> Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 62
  • 63. What is Apache Camel ļ‚§ Content Based Router - Java DSL from("activemq:NewOrders") .choice() .when().xpath("/order/product = 'widget'") .to("activemq:Orders.Widget") .otherwise() .to("activemq:Orders.Gadget"); Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 63
  • 64. What is Apache Camel ļ‚§ Endpoints as URIs use file instead from("file:inbox/orders") .choice() .when().xpath("/order/product = 'widget'") .to("activemq:Orders.Widget") .otherwise() .to("activemq:Orders.Gadget"); Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 64
  • 65. What is Apache Camel ļ‚§ Endpoints as URIs parameters from("file:inbox/orders?delete=true") .choice() .when().xpath("/order/product = 'widget'") .to("activemq:Orders.Widget") .otherwise() .to("activemq:Orders.Gadget"); Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 65
  • 66. Enterprise Integration: Apache Camel and ActiveMQ work well together ... Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 66
  • 67. ActiveMQ with embedded Camel: Flexible and Performant Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 67
  • 68. ActiveMQ with embedded Camel: import camel into ActiveMQ broker config: <beans> Ā Ā Ā <brokerĀ brokerName="testBroker"Ā Ā xmlns="http://activemq.apache.org/schema/core"> Ā Ā Ā Ā <transportConnectors> Ā Ā Ā Ā Ā Ā <transportConnectorĀ uri="tcp://localhost:61616"/> Ā Ā Ā Ā </transportConnectors> Ā Ā </broker> Ā Ā <importĀ resource="camel.xml"/> </beans> Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 68
  • 69. ActiveMQ with embedded Camel: Setup Camel Context in usual way <camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:queue:test.queue"/> <choice> <when> <xpath>$foo = 'bar'</xpath> <to uri="activemq:topic:topic.bar"/> </when> <when> <xpath>$foo = 'cheese'</xpath> <to uri="activemq:topic:topic.cheese"/> </when> <otherwise> <to uri="activemq:topic:topic.all"/> </otherwise> </choice> </route> </camelContext> Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 69
  • 70. Enterprise Integration: Lets look at some challenges for messaging Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 70
  • 71. Messaging Challenges ļ‚§ Scalability ā€¢ Vertical scaling - how do we support a 100,000 destinations? ā€¢ Horizontal Scaling - how can we linear scale greater than 100k destinations ? ļ‚§ Performance - everything needs to be faster - ActiveMQ - should be the fastest open source messaging ļ‚§ Continuous availability (active active clustering) ļ‚§ Protocol support - thereā€™s a range of choices - ActiveMQ should support them. Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 71
  • 72. CERN Large Hadron Collider ļ‚§ Worlds largest and most powerful particle accelerator ļ‚§ Currently 10 different Collider Experiments ļ‚§ Budget of $9 billion ļ‚§ 30G/s optical network Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 72
  • 73. CERN Large Hadron Collider ļ‚§ Produces 15 petabytes of data annually ļ‚§ WLCG ā€“ 34 different countries ļ‚§ Lots of Data ā€“ lots of destinations ļ‚§ Requires next generation messaging to cope with information demand Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 73
  • 74. Need new Messaging Architecture ļ‚§ Extreme throughput ļ‚§ Scalable to millions of Dynamic Destinations ļ‚§ Extensive protocol support ļ‚§ Scale to x100k connections Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 74
  • 75. Introducing ActiveMQ Apollo ļ‚§ Scala based core for very fast, scalable dispatching ļ‚§ modular design ā€“ independent lifecycle support ļ‚§ Enhanced Queues ļ‚§ More Protocols ļ‚§ Richer REST based Management ļ‚§ Intelligent Clustering Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 75
  • 76. Hawtdispatch ļ‚§ Based on Grand Central Dispatch (from OS X) ļ‚§ Event based ā€“ supports both reactor and proactor patterns ļ‚§ Uses fixed size thread pool ā€“ to match number of cores available ļ‚§ Reduces Thread contention - tries to use same thread and scales to very large connections ļ‚§ Handles millions of messages per second Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 76
  • 77. More protocols than OpenWire and STOMP ļ‚§ MQTT ā€¢ IBM developed open protocol- supported by WebsphereMQ, Mosquitto and now Apollo ā€¢ Publish/Subscribe and Queues (version 5 spec) ā€¢ Designed to be used from embedded devices all the way up to application stacks ļ‚§ Beanstalk ā€¢ Short lived tasks ā€¢ sender needs to take action if a job is not consumed ā€¢ sender needs to know job is on the Queue ā€¢ very scalable ļ‚§ AMQP 1.0 ā€¢ First Enterprise Version ā€¢ supports distributed transactions ā€¢ supports reliable messaging ā€¢ Flow Control should now work Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 77
  • 78. Automatic Destination Partioning (clustering) ļ‚§ Uniform load across multiple brokers ļ‚§ Clients automatically connect to the correct broker(s) ļ‚§ Massive scalability ļ‚§ Reduce network hops Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 78
  • 79. What about performance ? Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 79
  • 80. FuseSource Subscription = Long Term Success SupportĀ  ā€¢Enterprise-classĀ 24x7Ā coverage ā€¢GlobalĀ organization ā€¢Mission-critical integrationĀ expertise InfluenceĀ  ā€¢UpdatesĀ andĀ migration ā€¢ProductĀ roadmaps assistance ā€¢PlanningĀ processes Tools ā€¢ConduitĀ toĀ Apache ā€¢Development ā€¢Operations ā€¢Management ā€¢Performance ā€¢Documentation Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 80
  • 81. FuseSource Knows How To Build Enterprise Apps HelpĀ throughoutĀ theĀ softwareĀ developmentĀ lifecycleā€¦ PilotĀ /Ā  Investigation Development Production PoC GetĀ started TryĀ itĀ out BuildĀ right DeployĀ safely ā€¢trainingĀ videos ā€¢techĀ overviewsĀ  ā€¢dev.Ā subscription ā€¢prof.Ā subscription ā€¢webinars ā€¢training ā€¢arch.Ā workshop ā€¢healthĀ checkĀ  ā€¢tutorials ā€¢projectĀ planning ā€¢bestĀ practices ā€¢perf.Ā workshop ā€¢documentation ā€¢pilotĀ workshop ā€¢QoSĀ  ā€¢HAĀ workshop ā€¢whiteĀ papers ā€¢pilotĀ subscriptionĀ  development ā€¢training ā€¢training AvailableĀ forĀ Free FuseSourceĀ PaidĀ Engagement Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 81
  • 82. FuseSource Track Record 100ā€™s millions+ Transactions every day running on Fuse 200,000+ Downloads per month 200+ Customers and growing rapidly 100%+ Rapid growth of FuseSource for past 3 years 24 hr Enterprise Support every day 25+ Apache Committers and Contributors 15+ Years of Enterprise Integration experience #1 Number one provider of Open Source Integration and Messaging products and services Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 82
  • 83. Any Questions? NoĀ vendorĀ lock-in FreeĀ toĀ redistribute EnterpriseĀ classā€¦ā€¦.. A Progress Software Company Copyright Ā© 2010 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 83
  • 84. Enterprise ActiveMQ - More Information: ļ‚§ http://fusesource.com/ ļ‚§ http://activemq.apache.org/ ļ‚§ http://camel.apache.org/ ļ‚§ http://activemq.apache.org/apollo/ Copyright Ā© 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company 84

Editor's Notes

  1. Key message ā€“ The FuseSource team is the force behind the projects ā€“ we are not just a body shop that likes to code. We built the projects, we know the projects, we influence the projects The top four photos show the biggest names at Apache, and may be recognized and revered by the prospect.
  2. Key point: a support is about much more than just support and bug fixing. It bridges the gap between community-developed code and enterprise development.
  3. Key message: we support customers throughout the entire software development lifecycle, and know what teams need and when. We know how to build enterprise apps A pilot subscription includes 8x5 support, but MUST include consulting and training. FuseSource does not sell 3 months of support alone. QoS = qualities of service. As the experts in building mission-critical, enterprise apps we know how to build security, scalability, etc. into enterprise deployments.
  4. Key message ā€“ the code is tried and true, and FuseSource is experienced.