Java Message Services
-
Upload
lorraine-jug -
Category
Technology
-
view
1.208 -
download
0
description
Transcript of Java Message Services
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
Connection
Factory
Connection
Session
Message
Message Producer
Message Consum
er
Destination
crée
créecréecrée
crée
Envoie Recoit
Vocabulaire
Message
Header
Payload
Objet Mode P2P Mode PubSub
Destination Queue Topic
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
Connection QueueConnection
TopicConnection
Session QueueSession TopicSession
MessageConsumer
QueueReceiver TopicSubscriber
MessageProducer
QueueSender TopicPublisher
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, is null
ExempleFilter = 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-letter queue
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
TextMessage msg = session.createTextMessage();msg.setText(″blabla″);msg.setJMSExpiration(System.getcurrentTimeMillis()+3600000);QueueSender sender = 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