Java Message Services

1 297 vues

Publié le

JMS (Java Message Services) est une API qui permet aux applications Java de s'échanger des messages asynchrones par le biais d'un MOM (Message Orieneted Middleware). Cette session passera en revue l'API Java Message Services et présentera quelques retours d'expérience sur sa mise en œuvre.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 297
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
39
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Java Message Services

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

×