2. Florian Beaufumé
• Architecte logiciel Java et web
• Freelance
• florian.beaufume@adeliosys.fr
• www.adeliosys.fr
• www.linkedin.com/in/fbeaufume
• fr.slideshare.net/fbeaufume
3. • "Java Message Service"
• JMS 1.1 dans J2EE 1.4, JMS 2 dans Java EE 7
• Une API Java d'émission/réception de messages
• Asynchrone
• Transactionnel
• Types de messages : texte, map, bytes, stream, object
métier
• Exemple de virement bancaire :
JMS
Foo.war Destination Bar.war
BD BD
Tx1 Tx2
Débit Crédit
4. • Point-to-point :
• Publish-subscribe :
• Souscription durable vs non-durable
Modèles de communication
Sender Queue Receiver
Publisher Topic
Subscriber
Subscriber
5. • Plusieurs topologies possibles, de simple :
• A complexe:
Déploiement
Serveur d'application
Serveur JMS
Foo.war
Serveur d'application 1
Serveur JMS
Foo.war Bar.war
Serveur
d'application
2
Acme.warMain.jar
6. • API simplifiée :
• Nouvelles méthodes :
• ConnectionFactory par défaut :
• Sous "java:comp/DefaultJMSConnectionFactory"
Nouveautés
7. • ConnectionFactory et Destination par annotation :
• Envois asynchrones (Java SE ou EE Client) :
• Shared subscriptions :
• Permet de partager la charge de réception de messages
• Mais pas de broadcast
Nouveautés, suite
8. • Poison messages :
• Soigner le gestion d'erreur, surtout les RuntimeException
• Rediriger le message
• Conversations :
• Utiliser correlationId ou une queue temporaire
• Attention aux transactions
Difficultés
Queue Receiver Ex
9. • Nombre de livraisons d'un message sur topic :
• Pour une application en cluster, une réception par instance
ou par cluster ?
• Cycle de vie d'une souscription durable de MDB hors
spécification :
• Messages perdus lors d'un redéploiement ?
Limitations