SlideShare uma empresa Scribd logo
1 de 66
JMS DEEP DIVE
Ryan Cuprak
About Me
Ryan Cuprak
• @ctjava
• rcuprak@gmail.com
• http://www.cuprak.info
• https://www.linkedin.com/in/rcuprak
Updated For
• EE 7
• EJB 3.2
Agenda
Custom Features
Best Practices
Gotchas
JMS Background
• Specification Revisions
• JMS 1.0.2b – June 26, 2001
• JMS 1.1 – April 12, 2002
• JMS 2.0 – May 21, 2013
• JMS 2.1 – Vote to Continue!
• Mandatory in Java EE 1.4 (November 11, 2003)!
• MOM pre-dates JMS & Java EE
JMS Ecosystem
#1 Upgrade Code to EE 7
Major changes in Java EE 7 (JMS 2.0)
Introduced in Java EE 7:
• JMSContext – replaces Connection and Session
• JMSProducer – replaces MessageProducer
• JMSConsumer – replaces MessageConsumer
Best Practice
#1 Upgrade Code to EE 7…
Best Practice
#1 Upgrade Code to EE 7…
Best Practice
#2 ActiveMQ & Java EE 7
Gotcha
#2 Java EE 7: Stumper…
What???
Gotcha
#2 Java EE 7: Stumper…
http://tinyurl.com/h7cvl8b
ActiveMQ supports JMS 1.1 – not JMS 2!
Gotcha
#3 Exception Handling
What is the impact of a RuntimeException?
Bad!
Best Practice
#3 Exception Handling…
Runtime Exception:
• Rollback and re-delivery of message
• Destruction of MDB and possibly connection
Best Practice
#4 Which of these are optional?
1. JMSMessageID
2. Overriding Message Header Fields
3. JMS Defined Properties
4. Provider Specific Properties
5. Distributed Transactions
6. Multiple Sessions
All of them!
Best Practice
#5 Pre-fetching
• Message consumer (RAR) pre-fetches a set of
messages to distribute to consumers (MDBs).
• Poorly configured pre-fetch
• Starve other consumers
• Heap exhaustion
• Default ActiveMQ: 1000 messages!
Gotcha
#4 Pre-fetching
Consumer starved!
Gotcha
#5 Large Messages
What happens to a container when you send gigantic
messages with large pre-fetch?
Best Practice
#6 XATransactions
How do you ensure that a messages is committed only if
the database commits?
Best Practice
#6 XATransactions
XA Data Source
Best Practice
#7 Wire Protocols
What are the different wire protocols and what are their unique
features?
• Openwire
• Cross language wire protocol for messaging
• Native protocol for ActiveMQ
• AMQP – Advanced Message Queuing Protocol
• ISO 19464 – binary wire protocol with widespread adoption
• Designed for high performance interoperable messaging
• MQTT – Message Queue Telemetry Transport
• Simple binary protocol – good for embedded/mobile
• Stomp – Simple/Streaming Text Oriented Messaging Protocol
• Text based protocol with simple semantics
Are you using the right wire protocol?
Best Practice
#7 Wire Protocols & MOM
MOM OpenWire AMQP MQTT Stomp Other
OpenMQ X X
ActiveMQ X X X X
RabbitMQ X X X
HornetQ X X
WebLogic X
WebSphere MQ X X
• MQTT – IoT/embedded/mobile
• Stomp – WebSockets – not high volume
Best Practice
#8 Dead Letter Queue
What is the dead letter queue and why should I care?
• Message that is repeatedly refused by a client.
• JMS provider will retry multiple times.
• Messages ultimately moved to Dead Letter Queue
(DLQ)
Order Queue Update Queue Update Queue
Update Queue
Best Practice
#8 Dead Letter Queue…
• Hundreds of messages
• How to recover?
Best Practice
#8 Dead Letter Queue…
ActiveMQ DLQ configuration – DLQ per queue.
Best Practice
#9 Expiring Messages
What’s wrong with the following code?
1. Message.setJMXExpiration() is for use by the
container.
2. Ignored if you set it.
Gotcha
#9 Expired Messages & DLQ
• Expired messages dumped to DLQ
• Messages build-up over time!
Best Practice
#9 Expired Messages & DLQ…
ActiveMQ solution
HornetQ
HornetQ messages are lost unless configured.
Best Practice
#10 MDB Pools
Do I need to configure MDB pools?
Best Practice
#10 MDP Pools…
• Don’t accept default MDB pool sizes.
• Monitor and adjust MDB pool sizes based on load.
glassfish-ejb-jar.xml
Best Practice
#11 Types of JMS Messages
What are the different types of messages types?
StreamMessage Serialized stream of objects.
MapMessage Message composed of name/value pairs. Names must be
unique.
TextMessage Simple message for Strings.
ObjectMessage Message consisting of a serialized Java Object.
BytesMessage Raw stream of bytes.
WebLogic includes XMLMessage:
• Optimized for XML.
• Supports filtering on XML content.
Best Practice
#12 Troubleshooting
What’s this message?
?
Best Practice
#12 Troubleshooting
Set descriptive headers on the messages!
Best Practice
#13 Web Socket and JMS
Java EE 7 Server
Web Socket
Endpoint
JMS Provider
JMS Provider
Stomp over Web Sockets
Best Practice
#13 Web Socket and JMS…
• Stomp protocol is a simple text-oriented messaging
protocol.
• Messaging server must support WebSockets
• Initial handshake is HTTP
• Message providers supporting STOMP & WebSockets:
• ActiveMQ
• RabitMQ
• WebLogic
• Enable for ActiveMQ:
<transportConnector name="ws" uri="ws://0.0.0.0:61614"/>
Best Practice
#14 Delayed Message Delivery
Can I send a message but have it delayed?
Extended feature in ActiveMQ.
• Send delay (AMQ_SCHEDULED_DELAY)
• Re-send delay (AMQ_SCHEDULED_PERIOD)
• Repeat count (AMQ_SCHEDULED_REPEAT)
Best Practice
#15 Priority & Messages
What does message priority mean?
• Message priority scale: 0-9 (0: lowest 9: highest)
• Default message priority: 4
• JMS specification does not require a provider strictly implement message ordering.
• Not dependable!
Best Practice
#15 Priority & Messages
Enforcing priority:
• Apache Camel with Resequencer
• http://camel.apache.org/resequencer.html
• Use Selectors:
• JMSPriority > 6
• JMSPriority < 6
Best Practice
#16 Protocol Framing
So I need a bigger message frame?
104 MB
Best Practice
#16 Protocol Framing
Client exception:
Server Exception
WARN | Transport Connection to: tcp://127.0.0.1:54025 failed:
java.io.IOException: Frame size of 404 bytes larger
Best Practice
#17 Leaks & Variable Loads
Load testing always at 100%?
Scenario:
• Message Driven Bean with a connection to a remote
resource.
• Standing pool size: 3
Gotcha
#17 Leaks & Variable Loads…
Oops, resource only leak as bean instances fluctuate!
0
5
10
15
20
25
30
35
1 2 3 4 5 6 7 8 9
Leak
Bean
Gotcha
#18 Advisory Messages
Extended ActiveMQ feature:
• Consumers, producers and connections starting and
stopping
• Temporary destinations being created and destroyed
• messages expiring on topics and queues
• Brokers sending messages to destinations with no
consumers.
• Connections starting and stopping
Best Practice
#18 Advisory Messages…
Best Practice
#20 Know your Activation Spec Properties
Property Required Default Description
acknowledgeMode Auto-acknowledge Auto-acknowledge or Dups-ok-
acknowledge
clientId Set n RA Required for durable
destinationType X null Queue or Topic
Destination X null Destination name
enableBatch false Transaction batching
maxMessagesPerBatch 10 Message per transaction batch
maxMessagesPerSessions 10 Pre-fetch size
maxSessions 10 Max concurrent sessions
messageSelector null Selector
noLocal false Include local msg?
ActiveMQ
Best Practice
#20 Know your Activation Spec Properties
Property Default Description
password Set inRA Password for JMS connection
subscriptionDurability NonDurable NonDurable or Durable
subscriptionName null Name of subscription
userName Set in RA Username for JMS connection
useRAManagedTransaction false
initialRedeliveryDelay 1000 Re-delivery delay
maximumRedeliveries 5 Max re-deliveries
redeliveryBackOffMultiplier 5 Multiplier for back-off.
redeliveryUseExponentialBackOff false Configures exponential back-off.
ActiveMQ
Best Practice
#20 Know your Activation Spec Properties
• ActiveMQ – only 2 properties were required
• Key tuning questions:
• Individual messages take a long time to process?
• Many messages or few messages?
• Batch processing of messages?
• Ok to process duplicates?
Best Practice
#21 Configuration Conflicts
Default for configuration for an MDB and ActiveMQ RA:
• Max MDB Pool Size (default 25)
• Max Sessions (default 10)
• MaxMessagesPerSessions (default 10)
How many messages can we
process concurrently?
10
Best Practice
#22 Configure Message Persistence
• JMS message providers message persistence is often
configurable and tunable
• Concerns:
• Available file/descriptors and disk space
• I/O throughput
• Flush frequencies
• ActiveMQ
• KahaDB – file-based transaction data store (journaled)
• AMQ message store – file based store, file per destination,
index must be rebuilt for non-planned termination
• JDBC message store
Best Practice
#22 Configure Message Persistence…
API does exist for ActiveMQ KahaDB!
Best Practice
#23 Deadlocked Consumer
Consumer blocks!
• Pre-fetched messages are stuck in limbo
• App cannot be un-deployed
• App container may not shutdown properlyGotcha
#24 Multiple Destinations
• ActiveMQ supports sending messages to multiple
queues and topics.
• Targets should be a comma separated list.
• Use prefix topic:// or queue://
Extended Feature
#25 Multiple Destination Consumption
• ActiveMQ supports consuming messages from multiple destinations
– both queues and topics
• Destination naming:
• ‘.’ separates elements in a destination name
• ‘*’ matches one element
• ‘>’ matches one or all trailing elements
• Example topics:
• us.ca.sfo.takeoffs
• us.ca.sfo.landings
• us.ca.lax.takeoffs
• us.ct.bdl.takeoffs
• Patterns:
• *.*.*.takeoffs – receive all takeoff messages
• us.ca.> - all landings and takeoffs in CA
Extended Feature
#25 Multiple Destination Consumption…
Extended Feature
#26 GlassFish 4 Bug
Containers can have bugs!
• GlassFish 3.x no message delay with MDBs and
ActiveMQ.
• GlassFish 4.1.1 2 minute delay with messages from
ActiveMQ but NOT OpenMQ
Gotcha
#26 GlassFish 4 Bug…
Timeout increased to 2 minutes!
Gotcha
#26 GlassFish 4 Bug…
Code path was different for OpenMQ.
Gotcha
#27 Transactions
Save
Exception
thrown
Single Transaction
Best Practice
#27 Transactions…
To ensure item is saved:
Best Practice
#28 Concurrency
Following objects support concurrent access:
• ConnectionFactory
• Connection
• Destination
Following object DO NOT support concurrent access:
• Session
• MessageProducer
• MessageConsumer
Best Practice
#29 JMSX Properties
Property Matched Modified Description
JMSXUserID X X Id of user sending message
JMSXAppID X X App sending message
JMSXProducerTXID Producer transaction id
JMSXConsumerTXID Transaction ID consumer
JMSXRcvTimestamp Time delivered to consumer
JMSXDeliveryCount X Delivery attempts
JMSXState Provider specific state
JMSXGroupID X X Message group id
JMSXGroupSeq X X Sequence number in group
No all properties are supported by all providers!
Best Practice
#30 Message Groups
• Message Groups:
• Guaranteed ordering of the processing of related messages
across a single queue
• Load balancing across multiple consumers.
• High availability / auto-failover
• Usage:
• message.setStringProperty("JMSXGroupID", ”JavaOne");
• message.setIntProperty("JMSXGroupSeq”,1);
• message.setIntProperty("JMSXGroupSeq”,-1); // closes group
• ActiveMQ enhancement:
• JMSXGroupFirstForConsumer
Best Practice
#31 Message Selectors
• Message selectors used to filter messages.
• Selectors use subset of SQL92
• Selectors cannot reference payload, only header
properties
Literals TRUE/FALSE, numbers, scientific notation
Identifiers Header or property field.
Operators AND, OR, LIKE, BETWEEN, =, <>, <, >, <=, =>,
+, -, *, /, IS NULL, IS NOT NULL
Best Practice
Best Practices
• High availability (HA) for production
• Protect queues/topics with passwords
• Enable and configure SSL
• Configure provider data store
• Backup provider data store
• Configure DQL policy
• Monitor DLQ
• Add descriptive message headers
• Pick and tune messaging transport
• Use Apache Camel and integration patterns
Join Us!
https://javaee-guardians.io
JMS 2.1
Vote for JMS 2.1!
• Flexible MDBs (EE)
• CDI beans as Listeners
• Batch Delivery
• Acknowledgment Modes
• setMessageListener (EE)
• create Connection factory (SE)
• create Queue/Topic (SE)
• Repeatable Annotations
• Redelivery configuration (EE)
Q&A

Mais conteúdo relacionado

Mais procurados

Syer Monitoring Integration And Batch
Syer Monitoring Integration And BatchSyer Monitoring Integration And Batch
Syer Monitoring Integration And BatchDave Syer
 
Swetha-IBMCertifiedWMQ_WMB
Swetha-IBMCertifiedWMQ_WMBSwetha-IBMCertifiedWMQ_WMB
Swetha-IBMCertifiedWMQ_WMBshwetha mukka
 
White paper for High Performance Messaging App Dev with Oracle AQ
White paper for High Performance Messaging App Dev with Oracle AQWhite paper for High Performance Messaging App Dev with Oracle AQ
White paper for High Performance Messaging App Dev with Oracle AQJeff Jacobs
 
HIgh Performance Messaging App Development with Oracle Advance Queuing
HIgh Performance Messaging App Development with Oracle Advance QueuingHIgh Performance Messaging App Development with Oracle Advance Queuing
HIgh Performance Messaging App Development with Oracle Advance QueuingJeff Jacobs
 
WebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionWebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionJames Bayer
 
ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011Bruce Snyder
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 
Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyC2B2 Consulting
 
Solving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilitySolving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilityZendCon
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn
 
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Hiroshi Ono
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dumpejlp12
 
Active mq Installation and Master Slave setup
Active mq Installation and Master Slave setupActive mq Installation and Master Slave setup
Active mq Installation and Master Slave setupRamakrishna Narkedamilli
 
Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)Stefane Fermigier
 

Mais procurados (20)

Asif
AsifAsif
Asif
 
Apache ActiveMQ
Apache ActiveMQ Apache ActiveMQ
Apache ActiveMQ
 
Syer Monitoring Integration And Batch
Syer Monitoring Integration And BatchSyer Monitoring Integration And Batch
Syer Monitoring Integration And Batch
 
Swetha-IBMCertifiedWMQ_WMB
Swetha-IBMCertifiedWMQ_WMBSwetha-IBMCertifiedWMQ_WMB
Swetha-IBMCertifiedWMQ_WMB
 
White paper for High Performance Messaging App Dev with Oracle AQ
White paper for High Performance Messaging App Dev with Oracle AQWhite paper for High Performance Messaging App Dev with Oracle AQ
White paper for High Performance Messaging App Dev with Oracle AQ
 
HIgh Performance Messaging App Development with Oracle Advance Queuing
HIgh Performance Messaging App Development with Oracle Advance QueuingHIgh Performance Messaging App Development with Oracle Advance Queuing
HIgh Performance Messaging App Development with Oracle Advance Queuing
 
WebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload ProtectionWebLogic Server Work Managers and Overload Protection
WebLogic Server Work Managers and Overload Protection
 
ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Programming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and GrizzlyProgramming WebSockets with Glassfish and Grizzly
Programming WebSockets with Glassfish and Grizzly
 
WMQ, WMB and EIP
WMQ, WMB and EIPWMQ, WMB and EIP
WMQ, WMB and EIP
 
Solving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilitySolving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and Scalability
 
Messaging in Java
Messaging in JavaMessaging in Java
Messaging in Java
 
How To Scale v2
How To Scale v2How To Scale v2
How To Scale v2
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
 
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dump
 
Jms using j boss
Jms using j bossJms using j boss
Jms using j boss
 
Active mq Installation and Master Slave setup
Active mq Installation and Master Slave setupActive mq Installation and Master Slave setup
Active mq Installation and Master Slave setup
 
Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)Nuxeo JavaOne 2007 presentation (in original format)
Nuxeo JavaOne 2007 presentation (in original format)
 

Destaque

Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Ryan Cuprak
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaRyan Cuprak
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...Michele Cuprak
 
Kathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of ChicagoKathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of ChicagoMichele Cuprak
 
South Suburban College Dean's List
South Suburban College  Dean's ListSouth Suburban College  Dean's List
South Suburban College Dean's ListMichele Cuprak
 
Munster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - CopyMunster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - CopyMichele Cuprak
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixghessler
 
XQuery - a technical overview
XQuery -  a technical overviewXQuery -  a technical overview
XQuery - a technical overviewLoren Cahlander
 
Jms introduction
Jms introductionJms introduction
Jms introductionBui Kiet
 
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 CamelJustin Reock
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
JavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityJavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityRyan Cuprak
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan Cuprak
 
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewApache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewMarcelo Jabali
 

Destaque (20)

Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 201450 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS Lambda
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
2016 Letter of Recommendation from CVR Charmaine Johnson-Davis Senior Vice Pr...
 
Kathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of ChicagoKathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
Kathy Barton - Letter of Recommendation Odyssey Healthcare of Chicago
 
South Suburban College Dean's List
South Suburban College  Dean's ListSouth Suburban College  Dean's List
South Suburban College Dean's List
 
Munster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - CopyMunster Med-Inn Letter of Recommendaton - Copy
Munster Med-Inn Letter of Recommendaton - Copy
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMix
 
XQuery - a technical overview
XQuery -  a technical overviewXQuery -  a technical overview
XQuery - a technical overview
 
Jms introduction
Jms introductionJms introduction
Jms introduction
 
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
 
Enabling Security For ActiveMQ JMX Access
Enabling Security For ActiveMQ JMX AccessEnabling Security For ActiveMQ JMX Access
Enabling Security For ActiveMQ JMX Access
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
JavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local CommunityJavaOne 2013: Organizing Your Local Community
JavaOne 2013: Organizing Your Local Community
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix OverviewApache ActiveMQ, Camel, CXF and ServiceMix Overview
Apache ActiveMQ, Camel, CXF and ServiceMix Overview
 

Semelhante a Jms deep dive [con4864]

Building an Event Bus at Scale
Building an Event Bus at ScaleBuilding an Event Bus at Scale
Building an Event Bus at Scalejimriecken
 
1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ振东 刘
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoTdejanb
 
Life in a Queue - Using Message Queue with django
Life in a Queue - Using Message Queue with djangoLife in a Queue - Using Message Queue with django
Life in a Queue - Using Message Queue with djangoTareque Hossain
 
WSO2 Message Broker - Product Overview
WSO2 Message Broker - Product OverviewWSO2 Message Broker - Product Overview
WSO2 Message Broker - Product OverviewWSO2
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache CamelKapil Kumar
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfOrtus Solutions, Corp
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootOracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootMichel Schildmeijer
 
Cloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewCloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewMessaging Meetup
 
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0WSO2
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsŁukasz Sowa
 
NYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentNYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentSpeedment, Inc.
 
Oracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresOracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresMichel Schildmeijer
 
A Tale of 2 Systems
A Tale of 2 SystemsA Tale of 2 Systems
A Tale of 2 SystemsDavid Newman
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS BackendLaurent Cerveau
 
MongoDB: How We Did It – Reanimating Identity at AOL
MongoDB: How We Did It – Reanimating Identity at AOLMongoDB: How We Did It – Reanimating Identity at AOL
MongoDB: How We Did It – Reanimating Identity at AOLMongoDB
 

Semelhante a Jms deep dive [con4864] (20)

Building an Event Bus at Scale
Building an Event Bus at ScaleBuilding an Event Bus at Scale
Building an Event Bus at Scale
 
1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ1. Core Features of Apache RocketMQ
1. Core Features of Apache RocketMQ
 
Messaging for IoT
Messaging for IoTMessaging for IoT
Messaging for IoT
 
Life in a Queue - Using Message Queue with django
Life in a Queue - Using Message Queue with djangoLife in a Queue - Using Message Queue with django
Life in a Queue - Using Message Queue with django
 
WSO2 Message Broker - Product Overview
WSO2 Message Broker - Product OverviewWSO2 Message Broker - Product Overview
WSO2 Message Broker - Product Overview
 
Weblogic - Data management in application servers
Weblogic - Data management in application serversWeblogic - Data management in application servers
Weblogic - Data management in application servers
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
10135 b 11
10135 b 1110135 b 11
10135 b 11
 
An introduction to Apache Camel
An introduction to Apache CamelAn introduction to Apache Camel
An introduction to Apache Camel
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootOracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
 
Cloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewCloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical Overview
 
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
WSO2 Product Release webinar - WSO2 Message Broker 2.2.0
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problems
 
Kafka overview v0.1
Kafka overview v0.1Kafka overview v0.1
Kafka overview v0.1
 
NYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentNYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ Speedment
 
Oracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresOracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy features
 
A Tale of 2 Systems
A Tale of 2 SystemsA Tale of 2 Systems
A Tale of 2 Systems
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
MongoDB: How We Did It – Reanimating Identity at AOL
MongoDB: How We Did It – Reanimating Identity at AOLMongoDB: How We Did It – Reanimating Identity at AOL
MongoDB: How We Did It – Reanimating Identity at AOL
 

Mais de Ryan Cuprak

Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Ryan Cuprak
 
DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)Ryan Cuprak
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Ryan Cuprak
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeansRyan Cuprak
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules uploadRyan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Ryan Cuprak
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Ryan Cuprak
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
 

Mais de Ryan Cuprak (13)

Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)Jakarta EE Test Strategies (2022)
Jakarta EE Test Strategies (2022)
 
DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)DIY Home Weather Station (Devoxx Poland 2023)
DIY Home Weather Station (Devoxx Poland 2023)
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
Combining R With Java For Data Analysis (Devoxx UK 2015 Session)
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 

Último

What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 

Último (20)

What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 

Jms deep dive [con4864]

  • 2. About Me Ryan Cuprak • @ctjava • rcuprak@gmail.com • http://www.cuprak.info • https://www.linkedin.com/in/rcuprak Updated For • EE 7 • EJB 3.2
  • 4. JMS Background • Specification Revisions • JMS 1.0.2b – June 26, 2001 • JMS 1.1 – April 12, 2002 • JMS 2.0 – May 21, 2013 • JMS 2.1 – Vote to Continue! • Mandatory in Java EE 1.4 (November 11, 2003)! • MOM pre-dates JMS & Java EE
  • 6. #1 Upgrade Code to EE 7 Major changes in Java EE 7 (JMS 2.0) Introduced in Java EE 7: • JMSContext – replaces Connection and Session • JMSProducer – replaces MessageProducer • JMSConsumer – replaces MessageConsumer Best Practice
  • 7. #1 Upgrade Code to EE 7… Best Practice
  • 8. #1 Upgrade Code to EE 7… Best Practice
  • 9. #2 ActiveMQ & Java EE 7 Gotcha
  • 10. #2 Java EE 7: Stumper… What??? Gotcha
  • 11. #2 Java EE 7: Stumper… http://tinyurl.com/h7cvl8b ActiveMQ supports JMS 1.1 – not JMS 2! Gotcha
  • 12. #3 Exception Handling What is the impact of a RuntimeException? Bad! Best Practice
  • 13. #3 Exception Handling… Runtime Exception: • Rollback and re-delivery of message • Destruction of MDB and possibly connection Best Practice
  • 14. #4 Which of these are optional? 1. JMSMessageID 2. Overriding Message Header Fields 3. JMS Defined Properties 4. Provider Specific Properties 5. Distributed Transactions 6. Multiple Sessions All of them! Best Practice
  • 15. #5 Pre-fetching • Message consumer (RAR) pre-fetches a set of messages to distribute to consumers (MDBs). • Poorly configured pre-fetch • Starve other consumers • Heap exhaustion • Default ActiveMQ: 1000 messages! Gotcha
  • 17. #5 Large Messages What happens to a container when you send gigantic messages with large pre-fetch? Best Practice
  • 18. #6 XATransactions How do you ensure that a messages is committed only if the database commits? Best Practice
  • 19. #6 XATransactions XA Data Source Best Practice
  • 20. #7 Wire Protocols What are the different wire protocols and what are their unique features? • Openwire • Cross language wire protocol for messaging • Native protocol for ActiveMQ • AMQP – Advanced Message Queuing Protocol • ISO 19464 – binary wire protocol with widespread adoption • Designed for high performance interoperable messaging • MQTT – Message Queue Telemetry Transport • Simple binary protocol – good for embedded/mobile • Stomp – Simple/Streaming Text Oriented Messaging Protocol • Text based protocol with simple semantics Are you using the right wire protocol? Best Practice
  • 21. #7 Wire Protocols & MOM MOM OpenWire AMQP MQTT Stomp Other OpenMQ X X ActiveMQ X X X X RabbitMQ X X X HornetQ X X WebLogic X WebSphere MQ X X • MQTT – IoT/embedded/mobile • Stomp – WebSockets – not high volume Best Practice
  • 22. #8 Dead Letter Queue What is the dead letter queue and why should I care? • Message that is repeatedly refused by a client. • JMS provider will retry multiple times. • Messages ultimately moved to Dead Letter Queue (DLQ) Order Queue Update Queue Update Queue Update Queue Best Practice
  • 23. #8 Dead Letter Queue… • Hundreds of messages • How to recover? Best Practice
  • 24. #8 Dead Letter Queue… ActiveMQ DLQ configuration – DLQ per queue. Best Practice
  • 25. #9 Expiring Messages What’s wrong with the following code? 1. Message.setJMXExpiration() is for use by the container. 2. Ignored if you set it. Gotcha
  • 26. #9 Expired Messages & DLQ • Expired messages dumped to DLQ • Messages build-up over time! Best Practice
  • 27. #9 Expired Messages & DLQ… ActiveMQ solution HornetQ HornetQ messages are lost unless configured. Best Practice
  • 28. #10 MDB Pools Do I need to configure MDB pools? Best Practice
  • 29. #10 MDP Pools… • Don’t accept default MDB pool sizes. • Monitor and adjust MDB pool sizes based on load. glassfish-ejb-jar.xml Best Practice
  • 30. #11 Types of JMS Messages What are the different types of messages types? StreamMessage Serialized stream of objects. MapMessage Message composed of name/value pairs. Names must be unique. TextMessage Simple message for Strings. ObjectMessage Message consisting of a serialized Java Object. BytesMessage Raw stream of bytes. WebLogic includes XMLMessage: • Optimized for XML. • Supports filtering on XML content. Best Practice
  • 31. #12 Troubleshooting What’s this message? ? Best Practice
  • 32. #12 Troubleshooting Set descriptive headers on the messages! Best Practice
  • 33. #13 Web Socket and JMS Java EE 7 Server Web Socket Endpoint JMS Provider JMS Provider Stomp over Web Sockets Best Practice
  • 34. #13 Web Socket and JMS… • Stomp protocol is a simple text-oriented messaging protocol. • Messaging server must support WebSockets • Initial handshake is HTTP • Message providers supporting STOMP & WebSockets: • ActiveMQ • RabitMQ • WebLogic • Enable for ActiveMQ: <transportConnector name="ws" uri="ws://0.0.0.0:61614"/> Best Practice
  • 35. #14 Delayed Message Delivery Can I send a message but have it delayed? Extended feature in ActiveMQ. • Send delay (AMQ_SCHEDULED_DELAY) • Re-send delay (AMQ_SCHEDULED_PERIOD) • Repeat count (AMQ_SCHEDULED_REPEAT) Best Practice
  • 36. #15 Priority & Messages What does message priority mean? • Message priority scale: 0-9 (0: lowest 9: highest) • Default message priority: 4 • JMS specification does not require a provider strictly implement message ordering. • Not dependable! Best Practice
  • 37. #15 Priority & Messages Enforcing priority: • Apache Camel with Resequencer • http://camel.apache.org/resequencer.html • Use Selectors: • JMSPriority > 6 • JMSPriority < 6 Best Practice
  • 38. #16 Protocol Framing So I need a bigger message frame? 104 MB Best Practice
  • 39. #16 Protocol Framing Client exception: Server Exception WARN | Transport Connection to: tcp://127.0.0.1:54025 failed: java.io.IOException: Frame size of 404 bytes larger Best Practice
  • 40. #17 Leaks & Variable Loads Load testing always at 100%? Scenario: • Message Driven Bean with a connection to a remote resource. • Standing pool size: 3 Gotcha
  • 41. #17 Leaks & Variable Loads… Oops, resource only leak as bean instances fluctuate! 0 5 10 15 20 25 30 35 1 2 3 4 5 6 7 8 9 Leak Bean Gotcha
  • 42. #18 Advisory Messages Extended ActiveMQ feature: • Consumers, producers and connections starting and stopping • Temporary destinations being created and destroyed • messages expiring on topics and queues • Brokers sending messages to destinations with no consumers. • Connections starting and stopping Best Practice
  • 44. #20 Know your Activation Spec Properties Property Required Default Description acknowledgeMode Auto-acknowledge Auto-acknowledge or Dups-ok- acknowledge clientId Set n RA Required for durable destinationType X null Queue or Topic Destination X null Destination name enableBatch false Transaction batching maxMessagesPerBatch 10 Message per transaction batch maxMessagesPerSessions 10 Pre-fetch size maxSessions 10 Max concurrent sessions messageSelector null Selector noLocal false Include local msg? ActiveMQ Best Practice
  • 45. #20 Know your Activation Spec Properties Property Default Description password Set inRA Password for JMS connection subscriptionDurability NonDurable NonDurable or Durable subscriptionName null Name of subscription userName Set in RA Username for JMS connection useRAManagedTransaction false initialRedeliveryDelay 1000 Re-delivery delay maximumRedeliveries 5 Max re-deliveries redeliveryBackOffMultiplier 5 Multiplier for back-off. redeliveryUseExponentialBackOff false Configures exponential back-off. ActiveMQ Best Practice
  • 46. #20 Know your Activation Spec Properties • ActiveMQ – only 2 properties were required • Key tuning questions: • Individual messages take a long time to process? • Many messages or few messages? • Batch processing of messages? • Ok to process duplicates? Best Practice
  • 47. #21 Configuration Conflicts Default for configuration for an MDB and ActiveMQ RA: • Max MDB Pool Size (default 25) • Max Sessions (default 10) • MaxMessagesPerSessions (default 10) How many messages can we process concurrently? 10 Best Practice
  • 48. #22 Configure Message Persistence • JMS message providers message persistence is often configurable and tunable • Concerns: • Available file/descriptors and disk space • I/O throughput • Flush frequencies • ActiveMQ • KahaDB – file-based transaction data store (journaled) • AMQ message store – file based store, file per destination, index must be rebuilt for non-planned termination • JDBC message store Best Practice
  • 49. #22 Configure Message Persistence… API does exist for ActiveMQ KahaDB! Best Practice
  • 50. #23 Deadlocked Consumer Consumer blocks! • Pre-fetched messages are stuck in limbo • App cannot be un-deployed • App container may not shutdown properlyGotcha
  • 51. #24 Multiple Destinations • ActiveMQ supports sending messages to multiple queues and topics. • Targets should be a comma separated list. • Use prefix topic:// or queue:// Extended Feature
  • 52. #25 Multiple Destination Consumption • ActiveMQ supports consuming messages from multiple destinations – both queues and topics • Destination naming: • ‘.’ separates elements in a destination name • ‘*’ matches one element • ‘>’ matches one or all trailing elements • Example topics: • us.ca.sfo.takeoffs • us.ca.sfo.landings • us.ca.lax.takeoffs • us.ct.bdl.takeoffs • Patterns: • *.*.*.takeoffs – receive all takeoff messages • us.ca.> - all landings and takeoffs in CA Extended Feature
  • 53. #25 Multiple Destination Consumption… Extended Feature
  • 54. #26 GlassFish 4 Bug Containers can have bugs! • GlassFish 3.x no message delay with MDBs and ActiveMQ. • GlassFish 4.1.1 2 minute delay with messages from ActiveMQ but NOT OpenMQ Gotcha
  • 55. #26 GlassFish 4 Bug… Timeout increased to 2 minutes! Gotcha
  • 56. #26 GlassFish 4 Bug… Code path was different for OpenMQ. Gotcha
  • 58. #27 Transactions… To ensure item is saved: Best Practice
  • 59. #28 Concurrency Following objects support concurrent access: • ConnectionFactory • Connection • Destination Following object DO NOT support concurrent access: • Session • MessageProducer • MessageConsumer Best Practice
  • 60. #29 JMSX Properties Property Matched Modified Description JMSXUserID X X Id of user sending message JMSXAppID X X App sending message JMSXProducerTXID Producer transaction id JMSXConsumerTXID Transaction ID consumer JMSXRcvTimestamp Time delivered to consumer JMSXDeliveryCount X Delivery attempts JMSXState Provider specific state JMSXGroupID X X Message group id JMSXGroupSeq X X Sequence number in group No all properties are supported by all providers! Best Practice
  • 61. #30 Message Groups • Message Groups: • Guaranteed ordering of the processing of related messages across a single queue • Load balancing across multiple consumers. • High availability / auto-failover • Usage: • message.setStringProperty("JMSXGroupID", ”JavaOne"); • message.setIntProperty("JMSXGroupSeq”,1); • message.setIntProperty("JMSXGroupSeq”,-1); // closes group • ActiveMQ enhancement: • JMSXGroupFirstForConsumer Best Practice
  • 62. #31 Message Selectors • Message selectors used to filter messages. • Selectors use subset of SQL92 • Selectors cannot reference payload, only header properties Literals TRUE/FALSE, numbers, scientific notation Identifiers Header or property field. Operators AND, OR, LIKE, BETWEEN, =, <>, <, >, <=, =>, +, -, *, /, IS NULL, IS NOT NULL Best Practice
  • 63. Best Practices • High availability (HA) for production • Protect queues/topics with passwords • Enable and configure SSL • Configure provider data store • Backup provider data store • Configure DQL policy • Monitor DLQ • Add descriptive message headers • Pick and tune messaging transport • Use Apache Camel and integration patterns
  • 65. JMS 2.1 Vote for JMS 2.1! • Flexible MDBs (EE) • CDI beans as Listeners • Batch Delivery • Acknowledgment Modes • setMessageListener (EE) • create Connection factory (SE) • create Queue/Topic (SE) • Repeatable Annotations • Redelivery configuration (EE)
  • 66. Q&A

Notas do Editor

  1. I am Ryan, this is Michael,
  2. We write some wonderful code that uses the Java E