SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
Ranker JMS Implementation
Agenda

● Why Event Processing System For Ranker?

● What are challenges?

● General Overview of JMS

● Walk through ActiveMQ

● Why Messaging?

● Other JMS Providers.
Why Messaging?

 ● Asynchronous operation
− A client can schedule work to be done and return
immediately
− A client can be notified in an event-driven fashion when
something has happened

 ● Loose Coupling
− Systems connected via messaging need not be aware
of each other, or use the same technologies
− Key messages can easily be routed to many systems
− Message broker is buffer in case of downtime
Why Messaging?

●  Fire and Forget
   − Message Broker can guarantee messages are
recorded and delivered even vs. crashes

●  Parallelize Work
   − Messages in a single stream can be handled in
parallel by many client threads or systems

●   Throttle Work
    − A large amount of work can be split into a small
number of threads or systems to throttle effort (e.g. due to
licensing restrictions)
Why Event Processing System For Ranker?
● Ranker has a lot of complicated algorithms running behind
  and user really does not need to wait till the execution of all
  the algorithms.

● You may wish to implement this because the request take a
  long time to complete or because several parties may be
  interested in the actual request
● Eg: Crowd ranked/Vote ranked List aggregation (This
  algorithm may take 1- 5 mts to complete depends of user
  contribution.)

● Email sending functionality.

● Moderation of user input (eg. Bad word filtering)

● List Auto tagging.
What are the challenges?


●   Selecting the JMS provider
     − We are running the app based on Spring 3.0
    /Apache tomcat stack, we have to select the
    appropriate JMS provider. We selected Apache
    ActiveMQ.

●   Reasons for selecting ActiveMQ
    − Its pretty easy to integrate with Spring Framework.
    − Open source project.
    − Pretty good documentation available for ActiveMQ as
    well as for Integration with spring framework.
What is JMS?


●   A specification that describes a common way for Java
    programs to create, send, receive and read distributed
    enterprise messages
●   Loosely coupled communication
●   Asynchronous messaging
●   Reliable delivery
    - A message is guaranteed to be delivered once and
    only once.
●   Outside the specification
    - Security services
    - Management services
A JMS Application

●   JMS Clients
    - Java programs that send/receive messages

●   Messages
    - Administered Objects
    preconfigured JMS objects created by an admin for the
    use of clients
    - ConnectionFactory, Destination (queue or topic)

●   JMS Provider
    - messaging system that implements JMS and
    administrative functionality
JMS Administration
JMS Messaging Domains


●   Point-to-Point (PTP)

    ○   Built around the concept of message queues
    ○   Each message has only one consumer

●   Publish-Subscribe systems

    ○   Uses a “topic” to send and receive messages
    ○   Each message has multiple consumers
Point-to-Point Messaging
Message Consumptions
● Synchronously

  ○ A subscriber or a receiver explicitly fetches the message from
    the destination by calling the receive method.

  ○ The receive method can block until a message arrives or can
    time out if a message does not arrive within a specified time
    limit.

● Asynchronously

  ○ A client can register a message listener with a consumer.

  ○ Whenever a message arrives at the destination, the JMS
    provider delivers the message by calling the listener's
    onMessage() method.
Page 1
JMS Message Types
More JMS Features


●   Durable subscription

    ●   By default a subscriber gets only messages
        published on a topic while a subscriber is alive

    ●   Durable subscription retains messages until a they
        are received by a subscriber or expire
More JMS Features

Difference Between Persistent & Nonpersistent deliveries

   − Persistent delivery take cares of reprocessing the
request if the JMS broker restarted before serving the
request, it will use file/db to store the request, this
implementation is costly compare to non persistent delivery.

   − Nonpersistent delivery will just ignore the request if
broker restarted while serving the request.
About ActiveMQ

●   An open-source message broker (compare to JBossMQ,
    or many commercial products)
       − See http://activemq.apache.org/
●   Generally stable and high-performance
●   Can be run standalone, or inside another process, app
    server, or Java EE application
●   Supports everything JMS requires, plus various
    extensions
●   Integrates well into other products
ActiveMQ Message Extensions

●   Virtual Destinations (load-balancing and failover for
    topics)

●   Retroactive Subscriptions (subscriber can receive some
    number of previous messages on connect)

●   Exclusive Consumers & Message Groups (loadbalancing
    and failover while preserving message ordering)

●   Mirrored queues (monitor queue messages)
ActiveMQ Client Connectivity

●   Dictated by the wire protocol a client uses to talk to the
    broker

●   Generally there are two protocol options – OpenWire
    (binary) and Stomp (text)
    − OpenWire is the default and has the most history and
    best support (including SSL) – for Java, .NET, etc.
    − Stomp is easiest to develop for and therefore has the
    most cross-language support (Perl, Python, Ruby, ...)

●   Also a variety of other special-purpose protocols (Jabber,
    adapters for REST/AJAX, etc.)
ActiveMQ Persistence Options

●   Different strategies available for storing persistent
    messages
    − to local files, database, etc.
    − or both – stored to local files and then periodically batch
    undelivered messages to the DB...

●   Default implementation changed between ActiveMQ 4.x
    and 5.x

●   May still customize the persistence engine based on
    specific performance requirements
ActiveMQ SecurityAnd Management

●   OpenWire protocol can use SSL for encryption

●   Broker can use authentication (e.g. username/password
    required to connect)
    − Uses JAAS to identify the back-end user data store
    (properties files, DB, LDAP, etc.)

●   JMX management enabled by default
    − Use a tool like JConsole to monitor queues, etc.

●   Web Console available as well
ActiveMQ Testing

●   ActiveMQ can easily run in an embedded, nonpersistent,
    in-VM only mode for unit tests

●   Also easily to run ActiveMQ via beans in a Spring context,
    if you're testing with Spring

●   ActiveMQ includes a simple JNDI provider if you want to
    test Java EE code that relies on JNDI lookups to access
    JMS resources

●   Can use tools like JMeter to load test the broker
JMS Providers

●   SunONE Message Queue (SUN)
     ○ A JMS provider integrated with the SunONE

       Application Server
     ○ http://www.sun.com



●   MQ JMS (IBM)
    ○ MQSeries is another messaging technology

    ○ Can configure MQ as a JMS provider

    ○ (http://www7b.software.ibm.

      com/wsdd/library/techtip/0112_cox.html)
JMS Providers

●   WebLogic JMS (BEA)
    ○ Enterprise-class messaging system integrated into

      WebLogic Server
    ○ http://dev2dev.bea.com/technologies/jms/index.jsp



●   JMSCourier (Codemesh)
     ○ Merging C++ applications into a JMS environment

     ○ http://www.codemesh.

       com/en/AlignTechnologyCaseStudy.html
More JMS Vendors

●   Fiorano Software http://www.fiorano.com
●   JRUN Server http://www.allaire.com
●   GemStone http://www.gemstone.com
●   Nirvana http://www.pcbsys.com
●   Oracle http://www.oracle.com
●   A more exhaustive listing is available at
●   http://java.sun.com/products/jms/vendors.html

Contenu connexe

Tendances

Understanding JMS Integration Patterns
Understanding JMS Integration Patterns Understanding JMS Integration Patterns
Understanding JMS Integration Patterns
WSO2
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMix
Bruce Snyder
 
Mule overview
Mule overviewMule overview
Mule overview
F K
 
WebLogic JMS System Best Practices
WebLogic JMS System Best PracticesWebLogic JMS System Best Practices
WebLogic JMS System Best Practices
Trivadis
 

Tendances (20)

JMS Backchannel
JMS BackchannelJMS Backchannel
JMS Backchannel
 
Understanding JMS Integration Patterns
Understanding JMS Integration Patterns Understanding JMS Integration Patterns
Understanding JMS Integration Patterns
 
Scalable Persistent Message Brokering with WSO2 Message Broker
Scalable Persistent Message Brokering with WSO2 Message BrokerScalable Persistent Message Brokering with WSO2 Message Broker
Scalable Persistent Message Brokering with WSO2 Message Broker
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMix
 
UltraESB - an introduction
UltraESB - an introductionUltraESB - an introduction
UltraESB - an introduction
 
System Configuration for UltraESB
System Configuration for UltraESBSystem Configuration for UltraESB
System Configuration for UltraESB
 
UltraESB - Advanced services
UltraESB - Advanced servicesUltraESB - Advanced services
UltraESB - Advanced services
 
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQAn Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
 
Mule overview
Mule overviewMule overview
Mule overview
 
IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Messaging Frameworks using JMS
Messaging Frameworks using JMS Messaging Frameworks using JMS
Messaging Frameworks using JMS
 
WebLogic JMS System Best Practices
WebLogic JMS System Best PracticesWebLogic JMS System Best Practices
WebLogic JMS System Best Practices
 
Esb 4.9.0 release webinar
Esb 4.9.0 release webinarEsb 4.9.0 release webinar
Esb 4.9.0 release webinar
 
MSMQ - Microsoft Message Queueing
MSMQ - Microsoft Message QueueingMSMQ - Microsoft Message Queueing
MSMQ - Microsoft Message Queueing
 
Wso2 esb 5.0.0 product release webinar
Wso2 esb 5.0.0   product release webinarWso2 esb 5.0.0   product release webinar
Wso2 esb 5.0.0 product release webinar
 
Mule
MuleMule
Mule
 
Mule scopes 2
Mule scopes 2Mule scopes 2
Mule scopes 2
 
Mule esb
Mule esbMule esb
Mule esb
 
Mule esb flow processing strategies
Mule esb flow processing strategiesMule esb flow processing strategies
Mule esb flow processing strategies
 

En vedette

Performance tuning in ranker
Performance tuning in rankerPerformance tuning in ranker
Performance tuning in ranker
EosSoftware
 
Achieving quality with tools case study
Achieving quality with tools case studyAchieving quality with tools case study
Achieving quality with tools case study
EosSoftware
 

En vedette (6)

Performance tuning in ranker
Performance tuning in rankerPerformance tuning in ranker
Performance tuning in ranker
 
Eossys
EossysEossys
Eossys
 
Optimizing JMS Performance for Cloud-based Application Servers
Optimizing JMS Performance for Cloud-based Application ServersOptimizing JMS Performance for Cloud-based Application Servers
Optimizing JMS Performance for Cloud-based Application Servers
 
Achieving quality with tools case study
Achieving quality with tools case studyAchieving quality with tools case study
Achieving quality with tools case study
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similaire à Ranker jms implementation

Towards Improved Data Dissemination of Publish-Subscribe Systems
Towards Improved Data Dissemination of Publish-Subscribe SystemsTowards Improved Data Dissemination of Publish-Subscribe Systems
Towards Improved Data Dissemination of Publish-Subscribe Systems
Srinath Perera
 
Apache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in actionApache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in action
dejanb
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
Mike Willbanks
 
Cpp In Soa
Cpp In SoaCpp In Soa
Cpp In Soa
WSO2
 

Similaire à Ranker jms implementation (20)

SOA Pattern-Asynchronous Queuing
SOA Pattern-Asynchronous QueuingSOA Pattern-Asynchronous Queuing
SOA Pattern-Asynchronous Queuing
 
Are you weak in the middle?
Are you weak in the middle?Are you weak in the middle?
Are you weak in the middle?
 
Apache ActiveMQ
Apache ActiveMQ Apache ActiveMQ
Apache ActiveMQ
 
Towards Improved Data Dissemination of Publish-Subscribe Systems
Towards Improved Data Dissemination of Publish-Subscribe SystemsTowards Improved Data Dissemination of Publish-Subscribe Systems
Towards Improved Data Dissemination of Publish-Subscribe Systems
 
[@NaukriEngineering] Messaging Queues
[@NaukriEngineering] Messaging Queues[@NaukriEngineering] Messaging Queues
[@NaukriEngineering] Messaging Queues
 
Enterprise messaging with jms
Enterprise messaging with jmsEnterprise messaging with jms
Enterprise messaging with jms
 
AMQP with RabbitMQ
AMQP with RabbitMQAMQP with RabbitMQ
AMQP with RabbitMQ
 
IBM WebSphere MQ Introduction
IBM WebSphere MQ Introduction IBM WebSphere MQ Introduction
IBM WebSphere MQ Introduction
 
WSO2 Message Broker - Product Overview
WSO2 Message Broker - Product OverviewWSO2 Message Broker - Product Overview
WSO2 Message Broker - Product Overview
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging Service
 
IBM MQ V8 annd JMS 2.0
IBM MQ V8 annd JMS 2.0IBM MQ V8 annd JMS 2.0
IBM MQ V8 annd JMS 2.0
 
XMPP Academy #1
XMPP Academy #1XMPP Academy #1
XMPP Academy #1
 
1480-techintrotoiib-150224130001-conversion-gate01.pptx
1480-techintrotoiib-150224130001-conversion-gate01.pptx1480-techintrotoiib-150224130001-conversion-gate01.pptx
1480-techintrotoiib-150224130001-conversion-gate01.pptx
 
Apache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in actionApache ActiveMQ - Enterprise messaging in action
Apache ActiveMQ - Enterprise messaging in action
 
Messaging in Java
Messaging in JavaMessaging in Java
Messaging in Java
 
ActiveMQ interview Questions and Answers
ActiveMQ interview Questions and AnswersActiveMQ interview Questions and Answers
ActiveMQ interview Questions and Answers
 
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
 
Cpp In Soa
Cpp In SoaCpp In Soa
Cpp In Soa
 
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
ZendCon - Integration and Asynchronous Processing with ActiveMQ and CamelZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+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@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
+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...
 
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...
 
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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
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?
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 

Ranker jms implementation

  • 2. Agenda ● Why Event Processing System For Ranker? ● What are challenges? ● General Overview of JMS ● Walk through ActiveMQ ● Why Messaging? ● Other JMS Providers.
  • 3. Why Messaging? ● Asynchronous operation − A client can schedule work to be done and return immediately − A client can be notified in an event-driven fashion when something has happened ● Loose Coupling − Systems connected via messaging need not be aware of each other, or use the same technologies − Key messages can easily be routed to many systems − Message broker is buffer in case of downtime
  • 4. Why Messaging? ● Fire and Forget − Message Broker can guarantee messages are recorded and delivered even vs. crashes ● Parallelize Work − Messages in a single stream can be handled in parallel by many client threads or systems ● Throttle Work − A large amount of work can be split into a small number of threads or systems to throttle effort (e.g. due to licensing restrictions)
  • 5. Why Event Processing System For Ranker? ● Ranker has a lot of complicated algorithms running behind and user really does not need to wait till the execution of all the algorithms. ● You may wish to implement this because the request take a long time to complete or because several parties may be interested in the actual request ● Eg: Crowd ranked/Vote ranked List aggregation (This algorithm may take 1- 5 mts to complete depends of user contribution.) ● Email sending functionality. ● Moderation of user input (eg. Bad word filtering) ● List Auto tagging.
  • 6. What are the challenges? ● Selecting the JMS provider − We are running the app based on Spring 3.0 /Apache tomcat stack, we have to select the appropriate JMS provider. We selected Apache ActiveMQ. ● Reasons for selecting ActiveMQ − Its pretty easy to integrate with Spring Framework. − Open source project. − Pretty good documentation available for ActiveMQ as well as for Integration with spring framework.
  • 7. What is JMS? ● A specification that describes a common way for Java programs to create, send, receive and read distributed enterprise messages ● Loosely coupled communication ● Asynchronous messaging ● Reliable delivery - A message is guaranteed to be delivered once and only once. ● Outside the specification - Security services - Management services
  • 8. A JMS Application ● JMS Clients - Java programs that send/receive messages ● Messages - Administered Objects preconfigured JMS objects created by an admin for the use of clients - ConnectionFactory, Destination (queue or topic) ● JMS Provider - messaging system that implements JMS and administrative functionality
  • 10. JMS Messaging Domains ● Point-to-Point (PTP) ○ Built around the concept of message queues ○ Each message has only one consumer ● Publish-Subscribe systems ○ Uses a “topic” to send and receive messages ○ Each message has multiple consumers
  • 12.
  • 13. Message Consumptions ● Synchronously ○ A subscriber or a receiver explicitly fetches the message from the destination by calling the receive method. ○ The receive method can block until a message arrives or can time out if a message does not arrive within a specified time limit. ● Asynchronously ○ A client can register a message listener with a consumer. ○ Whenever a message arrives at the destination, the JMS provider delivers the message by calling the listener's onMessage() method.
  • 16. More JMS Features ● Durable subscription ● By default a subscriber gets only messages published on a topic while a subscriber is alive ● Durable subscription retains messages until a they are received by a subscriber or expire
  • 17. More JMS Features Difference Between Persistent & Nonpersistent deliveries − Persistent delivery take cares of reprocessing the request if the JMS broker restarted before serving the request, it will use file/db to store the request, this implementation is costly compare to non persistent delivery. − Nonpersistent delivery will just ignore the request if broker restarted while serving the request.
  • 18. About ActiveMQ ● An open-source message broker (compare to JBossMQ, or many commercial products) − See http://activemq.apache.org/ ● Generally stable and high-performance ● Can be run standalone, or inside another process, app server, or Java EE application ● Supports everything JMS requires, plus various extensions ● Integrates well into other products
  • 19. ActiveMQ Message Extensions ● Virtual Destinations (load-balancing and failover for topics) ● Retroactive Subscriptions (subscriber can receive some number of previous messages on connect) ● Exclusive Consumers & Message Groups (loadbalancing and failover while preserving message ordering) ● Mirrored queues (monitor queue messages)
  • 20. ActiveMQ Client Connectivity ● Dictated by the wire protocol a client uses to talk to the broker ● Generally there are two protocol options – OpenWire (binary) and Stomp (text) − OpenWire is the default and has the most history and best support (including SSL) – for Java, .NET, etc. − Stomp is easiest to develop for and therefore has the most cross-language support (Perl, Python, Ruby, ...) ● Also a variety of other special-purpose protocols (Jabber, adapters for REST/AJAX, etc.)
  • 21. ActiveMQ Persistence Options ● Different strategies available for storing persistent messages − to local files, database, etc. − or both – stored to local files and then periodically batch undelivered messages to the DB... ● Default implementation changed between ActiveMQ 4.x and 5.x ● May still customize the persistence engine based on specific performance requirements
  • 22. ActiveMQ SecurityAnd Management ● OpenWire protocol can use SSL for encryption ● Broker can use authentication (e.g. username/password required to connect) − Uses JAAS to identify the back-end user data store (properties files, DB, LDAP, etc.) ● JMX management enabled by default − Use a tool like JConsole to monitor queues, etc. ● Web Console available as well
  • 23. ActiveMQ Testing ● ActiveMQ can easily run in an embedded, nonpersistent, in-VM only mode for unit tests ● Also easily to run ActiveMQ via beans in a Spring context, if you're testing with Spring ● ActiveMQ includes a simple JNDI provider if you want to test Java EE code that relies on JNDI lookups to access JMS resources ● Can use tools like JMeter to load test the broker
  • 24. JMS Providers ● SunONE Message Queue (SUN) ○ A JMS provider integrated with the SunONE Application Server ○ http://www.sun.com ● MQ JMS (IBM) ○ MQSeries is another messaging technology ○ Can configure MQ as a JMS provider ○ (http://www7b.software.ibm. com/wsdd/library/techtip/0112_cox.html)
  • 25. JMS Providers ● WebLogic JMS (BEA) ○ Enterprise-class messaging system integrated into WebLogic Server ○ http://dev2dev.bea.com/technologies/jms/index.jsp ● JMSCourier (Codemesh) ○ Merging C++ applications into a JMS environment ○ http://www.codemesh. com/en/AlignTechnologyCaseStudy.html
  • 26. More JMS Vendors ● Fiorano Software http://www.fiorano.com ● JRUN Server http://www.allaire.com ● GemStone http://www.gemstone.com ● Nirvana http://www.pcbsys.com ● Oracle http://www.oracle.com ● A more exhaustive listing is available at ● http://java.sun.com/products/jms/vendors.html