SlideShare une entreprise Scribd logo
1  sur  31
JMS	 Tour d’horizon
Agenda Présentation Pourquoi JMS ? Structure d’un message Modes de communications Modes d’utilisation de JMS Points d’attention Futur de JMS Questions
Présentation API ancienne (1.1 en 2002) Permettre l’échange de message Découplage lâche Portage de MQSeries et donc interaction avec les gros systèmes
Pourquoi JMS ? Intégration d’environnements hétérogènes Réduction des bottlenecks Améliorer la scalabilité Flexibilité de l’architecture
Vocabulaire ConnectionFactory crée Connection crée crée crée Session crée Message Producer Message Consumer Message Envoie Recoit Destination
Vocabulaire Message Header Payload
Structure d’un message Header JMS… JMSX… Properties Payload
Structure d’un messageHeader - JMS Champs pré-remplis JMSDestination (queue ou topic) JMSDeliveryMode (persistent ou non) JMSMessageID JMSTimestamp JMSExpiration JMSRedelivered JMSPriority Champs à remplir JMSReplyTo JMSCorrelationID JMSType (type de message, dépendant du MOM)
Structure d’un messageHeader - JMSX Spécifique au provider  2 propriétés pour grouper des messages  JMSXGroupID JMSXGroupSeq
Structure d’un messageHeader - Properties Type primitif  Libre  Filtrable  Définissable uniquement avant l’envoie
Structure d’un messagePayload Text Object Bytes Stream Map
Mode de communication Publish / Subscribe Point to Point Filtrage Transaction
Mode de communication Publish - Subscribe Type twitter Un message pour plusieurs destinataires  Destinataires non connus  Messages éphémères  Les destinataires reçoivent une copie du message
Mode de communication Point to Point Echange via une Queue  1 émetteur – 1 recepteur 1 seul récepteur même si plusieurs listeners On consomme toujours le 1er message  Communication asynchrone  Fire-and-forget Request-reply correlationID Acknowledge
Mode de communication Filtrage Sur le receiver Sur le MDB Xml Annotation receiver= session.createReceiver(queue, filter) <messageSelector>filter</messageSelector> @MessageDriven(… activationConfig={ @ActivationConfigProperty( propertyName= ″messageSelector″, propertyValue= ″filter″ ) 	} )
Mode de communication Filtrage - syntaxe Syntaxe SQL like Opérateurs arithmétiques +,-,*,/ <, >, <=, >=, = Opérateurs logiques and , or, like, between, in, not, isnull Exemple Filter = String.format(″JMSCorrelationID=‘%1$s’ and myPoperty=’%2$s’ ″, message.getJMSMessageID(), ″uneValeurPertinente″);
Mode de communication Transactions Emetteur Recepteur Groupes de messages Transactions distribuées
Mode de communication Transactions - Emetteur L’émetteur envoie son message au MOM Le MOM garanti la persistance du message Possibilité de commit après plusieurs envois
Mode de communication Transactions - Récepteur Un message n’est consommé qu’une fois Mode de transaction  Auto-acknowledge Client-acknowledge Redelivery Dead-letterqueue
Mode de communication Transactions – Groupes de messages 2 propriétés JMSXGroupID JMSXGroupSeq Spec floues
Mode de communication Transactions – Transactions distribuées Optionnel Les mêmes avec XA XAConnectionFactory XAQueueConnectionFactory XATopicConnectionFactory XAConnection XAQueueConnection XATopicConnection XASession XATopicSession XAQueueSession Performances
Modes d’utilisation de JMS MessageListener, Receiver MessageDrivenBean depuis EJB3 Spring REST
Modes d’utilisation de JMSMessageListener - Receiver Traitement de la queue à la demande Contrôle plus fin On doit gérer le processing des queues à la main Attention aux threads
Modes d’utilisation de JMSMessageDrivenBean Depuis EJB3 Configurable par xml/annotation Scale automatiquement Se gère via JMX
Points d’attention Messages Utilisation de MDB Propriétés auto-settées Infrastructure Architecture logicielle
Points d’attentionMessages - MDB Message façade : traite des messages et en réémet en réponse Transformation-routage
Points d’attentionMessages - Propriétés TextMessagemsg = session.createTextMessage(); msg.setText(″blabla″); msg.setJMSExpiration(System.getcurrentTimeMillis()+3600000); QueueSendersender = session.createSender(queue); sender.setTimeToLive(3600000); sender.send(msg);
Points d’attentionInfrastructure MOM embarqué ou stand-alone Sécurité : communication ou message
Points d’attentionArchitecture logicielle Une Queue par type de message Mauvaise gestion des priorités Monitoring des queues
Futur de JMS Meilleure interopérabilité Spec de la v2 sont à l’étude AMQP
Questions

Contenu connexe

Similaire à Java Message Services

Similaire à Java Message Services (8)

Jms.back.to.basic
Jms.back.to.basicJms.back.to.basic
Jms.back.to.basic
 
Architecture orientée message.pdf
Architecture orientée message.pdfArchitecture orientée message.pdf
Architecture orientée message.pdf
 
Condensé de mom illustré
Condensé de mom illustréCondensé de mom illustré
Condensé de mom illustré
 
Présentation Exchange 2010
Présentation Exchange 2010Présentation Exchange 2010
Présentation Exchange 2010
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
 
Pourquoi migrer vers exchange 2010
Pourquoi migrer vers exchange 2010Pourquoi migrer vers exchange 2010
Pourquoi migrer vers exchange 2010
 
momjms.pdf
momjms.pdfmomjms.pdf
momjms.pdf
 
srep_cours_06.pdf
srep_cours_06.pdfsrep_cours_06.pdf
srep_cours_06.pdf
 

Plus de Lorraine JUG

Milou fait un régime Guava Lombok
Milou fait un régime Guava LombokMilou fait un régime Guava Lombok
Milou fait un régime Guava LombokLorraine JUG
 
De Runnable & synchronized à parallele() et atomically()
De Runnable & synchronized à parallele() et atomically()De Runnable & synchronized à parallele() et atomically()
De Runnable & synchronized à parallele() et atomically()Lorraine JUG
 
Bonita Open Solution why, what, how?
Bonita Open Solution why, what, how?Bonita Open Solution why, what, how?
Bonita Open Solution why, what, how?Lorraine JUG
 
Stack Technologique Google
Stack Technologique GoogleStack Technologique Google
Stack Technologique GoogleLorraine JUG
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platformLorraine JUG
 
Comment concilier Agilité et projet au forfait ?
Comment concilier Agilité et projet au forfait ?Comment concilier Agilité et projet au forfait ?
Comment concilier Agilité et projet au forfait ?Lorraine JUG
 
Scrum, iceScrum et Rock'n Roll
Scrum, iceScrum et Rock'n RollScrum, iceScrum et Rock'n Roll
Scrum, iceScrum et Rock'n RollLorraine JUG
 

Plus de Lorraine JUG (13)

Couchbase
CouchbaseCouchbase
Couchbase
 
Milou fait un régime Guava Lombok
Milou fait un régime Guava LombokMilou fait un régime Guava Lombok
Milou fait un régime Guava Lombok
 
De Runnable & synchronized à parallele() et atomically()
De Runnable & synchronized à parallele() et atomically()De Runnable & synchronized à parallele() et atomically()
De Runnable & synchronized à parallele() et atomically()
 
NIO 2
NIO 2NIO 2
NIO 2
 
Java SE 7
Java SE 7Java SE 7
Java SE 7
 
Bonita Open Solution why, what, how?
Bonita Open Solution why, what, how?Bonita Open Solution why, what, how?
Bonita Open Solution why, what, how?
 
Stack Technologique Google
Stack Technologique GoogleStack Technologique Google
Stack Technologique Google
 
GWT
GWTGWT
GWT
 
The Java EE 6 platform
The Java EE 6 platformThe Java EE 6 platform
The Java EE 6 platform
 
Tapestry
TapestryTapestry
Tapestry
 
Comment concilier Agilité et projet au forfait ?
Comment concilier Agilité et projet au forfait ?Comment concilier Agilité et projet au forfait ?
Comment concilier Agilité et projet au forfait ?
 
Fcitr public
Fcitr publicFcitr public
Fcitr public
 
Scrum, iceScrum et Rock'n Roll
Scrum, iceScrum et Rock'n RollScrum, iceScrum et Rock'n Roll
Scrum, iceScrum et Rock'n Roll
 

Java Message Services

  • 2. Agenda Présentation Pourquoi JMS ? Structure d’un message Modes de communications Modes d’utilisation de JMS Points d’attention Futur de JMS Questions
  • 3. Présentation API ancienne (1.1 en 2002) Permettre l’échange de message Découplage lâche Portage de MQSeries et donc interaction avec les gros systèmes
  • 4. Pourquoi JMS ? Intégration d’environnements hétérogènes Réduction des bottlenecks Améliorer la scalabilité Flexibilité de l’architecture
  • 5. Vocabulaire ConnectionFactory crée Connection crée crée crée Session crée Message Producer Message Consumer Message Envoie Recoit Destination
  • 7. Structure d’un message Header JMS… JMSX… Properties Payload
  • 8. Structure d’un messageHeader - JMS Champs pré-remplis JMSDestination (queue ou topic) JMSDeliveryMode (persistent ou non) JMSMessageID JMSTimestamp JMSExpiration JMSRedelivered JMSPriority Champs à remplir JMSReplyTo JMSCorrelationID JMSType (type de message, dépendant du MOM)
  • 9. Structure d’un messageHeader - JMSX Spécifique au provider 2 propriétés pour grouper des messages JMSXGroupID JMSXGroupSeq
  • 10. Structure d’un messageHeader - Properties Type primitif Libre Filtrable Définissable uniquement avant l’envoie
  • 11. Structure d’un messagePayload Text Object Bytes Stream Map
  • 12. Mode de communication Publish / Subscribe Point to Point Filtrage Transaction
  • 13. Mode de communication Publish - Subscribe Type twitter Un message pour plusieurs destinataires Destinataires non connus Messages éphémères Les destinataires reçoivent une copie du message
  • 14. Mode de communication Point to Point Echange via une Queue 1 émetteur – 1 recepteur 1 seul récepteur même si plusieurs listeners On consomme toujours le 1er message Communication asynchrone Fire-and-forget Request-reply correlationID Acknowledge
  • 15. Mode de communication Filtrage Sur le receiver Sur le MDB Xml Annotation receiver= session.createReceiver(queue, filter) <messageSelector>filter</messageSelector> @MessageDriven(… activationConfig={ @ActivationConfigProperty( propertyName= ″messageSelector″, propertyValue= ″filter″ ) } )
  • 16. Mode de communication Filtrage - syntaxe Syntaxe SQL like Opérateurs arithmétiques +,-,*,/ <, >, <=, >=, = Opérateurs logiques and , or, like, between, in, not, isnull Exemple Filter = String.format(″JMSCorrelationID=‘%1$s’ and myPoperty=’%2$s’ ″, message.getJMSMessageID(), ″uneValeurPertinente″);
  • 17. Mode de communication Transactions Emetteur Recepteur Groupes de messages Transactions distribuées
  • 18. Mode de communication Transactions - Emetteur L’émetteur envoie son message au MOM Le MOM garanti la persistance du message Possibilité de commit après plusieurs envois
  • 19. Mode de communication Transactions - Récepteur Un message n’est consommé qu’une fois Mode de transaction Auto-acknowledge Client-acknowledge Redelivery Dead-letterqueue
  • 20. Mode de communication Transactions – Groupes de messages 2 propriétés JMSXGroupID JMSXGroupSeq Spec floues
  • 21. Mode de communication Transactions – Transactions distribuées Optionnel Les mêmes avec XA XAConnectionFactory XAQueueConnectionFactory XATopicConnectionFactory XAConnection XAQueueConnection XATopicConnection XASession XATopicSession XAQueueSession Performances
  • 22. Modes d’utilisation de JMS MessageListener, Receiver MessageDrivenBean depuis EJB3 Spring REST
  • 23. Modes d’utilisation de JMSMessageListener - Receiver Traitement de la queue à la demande Contrôle plus fin On doit gérer le processing des queues à la main Attention aux threads
  • 24. Modes d’utilisation de JMSMessageDrivenBean Depuis EJB3 Configurable par xml/annotation Scale automatiquement Se gère via JMX
  • 25. Points d’attention Messages Utilisation de MDB Propriétés auto-settées Infrastructure Architecture logicielle
  • 26. Points d’attentionMessages - MDB Message façade : traite des messages et en réémet en réponse Transformation-routage
  • 27. Points d’attentionMessages - Propriétés TextMessagemsg = session.createTextMessage(); msg.setText(″blabla″); msg.setJMSExpiration(System.getcurrentTimeMillis()+3600000); QueueSendersender = session.createSender(queue); sender.setTimeToLive(3600000); sender.send(msg);
  • 28. Points d’attentionInfrastructure MOM embarqué ou stand-alone Sécurité : communication ou message
  • 29. Points d’attentionArchitecture logicielle Une Queue par type de message Mauvaise gestion des priorités Monitoring des queues
  • 30. Futur de JMS Meilleure interopérabilité Spec de la v2 sont à l’étude AMQP