JORAM Java Open Reliable Asynchronous Messaging
Introduction JORAM implémente la norme JMS via la plate- forme S CALAGENT è JMS normalise laccès des programmes Java aux middlewares à messages (Message Oriented Middleware) è Les MOM permettent lintégration dapplications hétérogènes et indépendantes
Message Oriented Middleware (MOM) è Modèle de communication entre logiciels Intégration de modules hétérogènes distribués Indépendance (asynchronisme) Fiabilité NT
Principe de base des MOM è Message Queueing Queues de messages persistantes Transmission des messages asynchrone (stockage des messages si nécessaire) Reprise après panne Un émetteur remet son message au système et peut continuer son exécution sans se soucier de létat du destinataire
Caractéristiques des MOM è Modes de communication Point-à-point (PTP): émetteur, récepteur et queue Publication/Souscription (Pub/Sub): émetteur, abonné et nœud è Modèle de programmation Réception explicite / implicite è Messages Messages dotés dattributs et de propriétés Priorités, garantie de délivrance
Linterface Java Message Service (JMS) è API Java daccès uniforme aux systèmes de messagerie Provider X JVM Client MQ X JMS Client Provider X JVM Client JMS
Le mode Point-à-Point (PTP) EmetteurDestinataire QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…"); Queue queue = (Queue) messaging.lookup("…"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(…); QueueSender sender = session.createSender(queue); String selector = new String("(name = 'Bull') or (name = 'IBM'))"); QueueReceiver receiver = session.createReceiver(queue, selector); Queue QueueConnectionFactory QueueSession QueueConnection QueueSession QueueConnection + QueueSender + QueueReceiver TextMessage msg = session.createTextMessage(); msg.setText("…"); sender.send(msg); TextMessage msg = (TextMessage) receiver.receive(); send receive
Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire Topic TopicConnectionFactory AB x y TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…"); Topic topic = (Topic) messaging.lookup("/A/x"); TopicConnection connection = connectionFactory.createTopicConnection(); TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE); TopicPublisher publisher = session.createPublisher(topic); TopicSubscriber subscriber = session.createSubscriber(topic); Subscriber.setMessageListener(listener); TopicSession TopicConnection TopicSession TopicConnection + TopicPublisher publish TopicSubscriber + Listener onMessage void onMessage(Message msg) throws JMSException { // unpack and handle the message … } publisher.publish(msg);
La plate-forme S CALAGENT è Bus logiciel à base dagents communicants è Agents = objets réactifs Persistants Légers : infrastructure dexécution partagée au sein dun serveur dagents è Modèle événement / réaction asynchrone Événement : changement détat significatif du système auquel un ou plusieurs agents réagissent Événement Notification Réaction fonction dans la classe Agent React SendTo Channel Agent
Larchitecture distribuée S CALAGENT ChannelEngine mq ChannelEngine mq Agent SendTo React Server A Server B è Infrastructure basée sur un bus à messages Acheminement des notifications Exécution de la réaction du destinataire Distribution: forte interconnexion des bus locaux
Les propriétés de la plate-forme è Persistance Sauvegarde des agents et notifications è Atomicité Cohérence garantie par un moniteur transactionnel è Persistance + Atomicité = Fiabilité Une notification est délivrée une et une seule fois è Ordonnancement causal Les notification sont délivrées selon un ordre causal B C A
JORAM JORAM est linterface JMS du MOM S CALAGENT Les queues et topics sont des agents Les messages sont encapsulés dans des notifications Délivrance asynchrone Garantie de délivrance Reprise après panne è Apports de linfrastructure à agents Architecture totalement distribuée Scalabilité
JMS via le MOM Scalagent Clients JMS QueueSenderQueueSessionQueueConnection queue Client 1 QueueReceiverQueueSession Client 2 QueueConnection Connexion TCP MOM Scalagent Message JMS Connexion TCP Notification Agent Proxy Agent Queue
Intégration dans JOnAS è JORAM implémente la partie ASF (Application Server Facilities) de la spéc. JMS Intégration de JORAM en tant que ressource dans un environnement transactionnel distribué tel quun serveur EJB Envoi et réception de messages dans des transactions gérées par le serveur EJB Réception asynchrone via les « Message-driven Beans »
Points forts de JORAM è Architecture distribuée Facilité de mise en oeuvre Passage à léchelle è Implémentation complète des « Application Server Facilities » Intégration au serveur EJB JOnAS Emetteur Serveur 2 Serveur 1 Serveur 0 QueueConnectionFactory Queue QueueConnectionFactory Récepteur