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.
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
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