Modèle à messages. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7. Remerciements.

Documents pareils
MOM: Concepts & Applications

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Plan du cours. Systèmes et applications asynchrones Middleware à message. Architecture distribuée. Objectifs du cours

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

Message Oriented Middleware (MOM) Java Message Service (JMS) Didier DONSEZ

Introduction aux applications réparties

Messagerie asynchrone et Services Web

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

INSTITUT NATIONAL POLYTECHNIQUE DE GRENOBLE

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Intégration de systèmes

Gestion et sécurisation des échanges XcMon, PMPI 03.31/2004 PDB. Global Data Exchange System

NFP111 Systèmes et Applications Réparties

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Android et le Cloud Computing

Principe de la messagerie électronique

Projet gestion d'objets dupliqués

Urbanisme du Système d Information et EAI

JF SMA'14. A3 - Agent Anytime Anywhere. une plateforme à agents distribués Oct l'expertise middleware.

Conception des systèmes répartis

Le modèle client-serveur

Le passage à l échelle de serveur J2EE : le cas des EJB

Java Naming and Directory Interface

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Le 09 et 10 Décembre 09

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

Vers l'orchestration de grilles de PC par les mécanismes de publicationsouscription

Réplication des données

Fiche de l'awt Intégration des applications

Architecture applicative et Cartographie

Mettez les évolutions technologiques au service de vos objectifs métier

Intergiciel - concepts de base

Introduction aux intergiciels

Le travail collaboratif et l'intelligence collective

Mise en œuvre des serveurs d application

Le livre blanc de l EAI Intégration des Applications d E n t r e p r i s e. octobre 99

SPECIFICATION ET DESCRIPTION DU MULTICAST FIABLE DANS ETOILE

Introduction à WebSphere MQ

1. Introduction à la distribution des traitements et des données

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Exécutif temps réel Pierre-Yves Duval (cppm)

Quel ENT pour Paris 5?

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello Mise à jour : 30 Septembre 2004

Analyse des techniques et des standards pour l interopérabilité entre plateformes

Introduction à la Programmation Parallèle: MPI

Note Technique Sécurité. Système d'authentification. Authentification hors APN LuxGSM Authentification 3G/APN. Système de notification

Software Engineering and Middleware A Roadmap

WebSphere MQ & Haute Disponibilité

Systèmes et algorithmes répartis

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

INTERNET, C'EST QUOI?

Présentation d'un MOM open-source

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

BMC Middleware Management

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Fonctionnement d Internet

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

Les Architectures Orientées Services (SOA)

Remote Method Invocation (RMI)

Gestion électronique de documents

Juillet Fax sur IP & Virtualisation

et Groupe Eyrolles, 2006, ISBN :

Programmation parallèle et distribuée

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Le spam introduction. Sommaire

Programmation par composants (1/3) Programmation par composants (2/3)

Remote Method Invocation en Java (RMI)

Architectures n-tiers Intergiciels à objets et services web

Gestion d une plate-forme temps réel sur une architecture basée sur

Architecture Orientée Service, JSON et API REST

NOTIONS DE RESEAUX INFORMATIQUES

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

SOA : une brique de la 4 ième génération de l architecture informatique? Hervé Crespel Président du club urba-ea

2 Chapitre 1 Introduction

Auto-évaluation Aperçu de l architecture Java EE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Le serveur modulaire d alerte, de recherche de personnes et de communication

Administration des ressources informatiques

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Gestion des utilisateurs et Entreprise Etendue

EAI. De l intégration à l e-business. Novembre François Rivard consultant senior Tél :

BPEL Orchestration de Web Services

Module BD et sites WEB

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

Evidian IAM Suite 8.0 Identity Management

Travail collaboratif. Glossaire

Auto-évaluation Programmation en Java

Club informatique Mont-Bruno Séances du 18 janvier et du 17 février 2012 Présentateur : Michel Gagné

Communiquer avec un ou plusieurs interlocuteurs. Michel Futtersack, Faculté de Droit, Université Paris Descartes, Sorbonne Paris Cité

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Le Multicast. A Guyancourt le

Chapitre 2. Classes et objets

Présentation Internet

VLAN Virtual LAN. Introduction. II) Le VLAN. 2.1) Les VLAN de niveau 1 (Port-based VLAN)

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Les processus métiers : concepts, modèles et systèmes

Transcription:

Modèle à messages Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr Remerciements André Freyssinet 1

Plan Principes généraux Les intergiciels à message (Message- Oriented Middleware) Message passing, queuing Publish/subscribe Events Implantation des MOM Application dans l'environnement Java Java Message Service (JMS) 2

Modèle à messages Introduction Modèle client-serveur Appels synchrones Bon pour des composants fortement couplés Désignation explicite du destinataire Connexion 1-1 Modèle à message Communications asynchrones Désignation anonyme (ex : annonce sur un newsgroup) Connexion 1-N 3

Modèle à messages Introduction Exemple d application Surveillance des équipements d un réseau Évolution des équipements et de l état des équipements Solution client-serveur Interrogation régulière Solution messages Émission de notifications des changements Les administrateurs s abonnent à ces notifications 4

Intergiciels à messages utilisé tous les jours Les forums électroniques (News) technologie pull le consommateur s abonne à un forum le producteur publie une information dans un forum le consommateur va lire le contenu du forum quand il le souhaite Le courrier électronique technologie push listes de diffusion (multicast - publish/subscribe) le consommateur s abonne à une liste de diffusion le producteur envoie un message à tous les abonnées de la liste le consommateur reçoit les messages sans avoir à faire d action Asynchrone Anonyme 1-N 5

Intergiciels à messages Principes directeurs Message Passing (communication par messages) Message Queuing (communication par file de message) Publish/Subscribe (communication par abonnements) Events (communication événementielle) 6

Intergiciels à messages Message passing Principes directeurs communication asynchrone communication directe ou indirecte (via des portes ) problème de désignation, localisation des entités coopérantes messages éventuellement typés (ex: Mach) Interface de programmation et mise en œuvre primitives de communication élémentaires ("envoyer", "recevoir") dans une architecture de type micro-noyau : Chorus, Mach dans un environnement de programmation parallèle : PVM, MPI Outils de développement peu évolués et de bas niveau 7

Intergiciels à messages Message passing - Extensions Communication de groupe groupe : ensemble de récepteurs identifiés par un nom unique gestion dynamique du groupe : arrivée/départ de membres différentes propriétés sur l'ordre mise en œuvre : utilisation possible de IP multicast applications : tolérance aux fautes (gestion de la réplication), travail coopératif Communication anonyme désignation associative : les récepteurs d'un message sont identifiés par leurs propriétés et pas par leur nom propriété : attribut du message ou identificateur externe indépendance entre émetteur et récepteurs 8

Intergiciels à messages Message Queuing Queue de messages persistantes asynchronisme et fiabilité Client Serveur send recv Indépendance de l'émetteur et du destinataire Le destinataire n est pas forcément actif 9

Intergiciels à messages Publish/Subscribe Désignation anonyme L émetteur envoie un message Basé sur un sujet (subject-based) Basé sur un contenu (content-based) Le récepteur s abonne (à un sujet ou un contenu) Communication 1-N Plusieurs récepteurs peuvent s abonner 10

Intergiciels à messages Publish/Subscribe producteur publish consommateur subscribe recv 11

Intergiciels à messages Events Concepts de base : événements, réactions (traitements associés à l occurrence d un événement) Principe d attachement : association dynamique entre un type d événement et une réaction processus_a émission (évt) Infrastructure intermédiaire base événement base abonnement abonnement (évt., réaction) exec (réaction) processus_b Valable pour du Message Passing, du Message Queuing, ou du Publish/Subscribe 12

Intergiciels à messages Events Par exemple pour du Publish/Subscribe producteur publish consommateur subscribe react 13

Intergiciels à messages Implantation Serveur centralisé (Hub & spoke) Simplicité de mise en œuvre Peu tolérant aux pannes Passage à l échelle difficile client client Serveur client client 14

Intergiciels à messages Implantation Serveur réparti (Snow flake) Chaque serveur connaît un ensemble d autres serveurs Routage des messages Répartition de la charge Fiabilité relative Passage à l échelle client client client serveur serveur serveur serveur client client 15

Intergiciels à messages Implantation Service réparti (bus logiciel) Très proche de l architecture Snow flake Les serveurs se connaissent tous Adapté aux LANs Processus_a Interface Bus Services du bus logiciel Système d exploitation Machine A protocoles du bus logiciel Processus_b Interface Bus Services du bus logiciel Système d exploitation Machine B 16

Java Message Service JMS : API Java d'accès uniforme aux systèmes de messagerie IBM MQSeries Novell, Oracle, Sybase Tibco Message Queue Publish/Subscribe Evénements 17

JMS : une interface Client Client Client JMS JMS Provider X Client Client Provider Y JVM JVM MQ X MQ X MQ X MQ X 18

Interface JMS ConnectionFactory : objet pour créer une connexion avec un serveur JMS Connection : une connexion active avec un serveur JMS Destination : une destination ou une source Session : un contexte mono-thread pour émettre ou recevoir MessageProducer : un objet pour émettre dans une session MessageConsummer : un objet pour recevoir dans une session Les implantations dépendent des fournisseurs 19

JMS - Architecture JNDI JMS Client Destination ConnectionFactory Connection Session + + MessageProducer MessageConsummer 20

Interfaces PTP et P/S ConnectionFactory Connection Destination Session MessageProducer MessageConsumer Point-To-Point QueueConnectionFactory QueueConnection Queue QueueSession QueueSender QueueReceiver Publish/Subscribe TopicConnectionFactory TopicConnection Topic TopicSession TopicPublisher TopicSubscriber 21

JMS - Message Entête JMSDestination, JMSDeliveryMode, JMSMessageId, JMSExpiration, JMSPriority, etc. Propriétés Couple <nom, valeur> Corps TextMessage, MapMessage StreamMessage, ObjectMessage BytesMessage 22

JMS - "Point-to-Point" Emetteur QueueConnection Messaging QueueConnectionFactory Queue Destinataire QueueConnection QueueSession QueueSession QueueConnectionFactory connectionfactory = (QueueConnectionFactory) naming_service.lookup(" "); Queue queue = (Queue) naming_service.lookup(" "); QueueConnection connection = connectionfactory.createqueueconnection(); QueueSession session = connection.createqueuesession( ); 23

JMS - "Point-to-Point" Emetteur QueueConnection Messaging QueueConnectionFactory Queue Destinataire QueueConnection QueueSession QueueSession + QueueSender QueueSender sender = session.createsender(queue); 24

JMS - "Point-to-Point" Emetteur QueueConnection Messaging QueueConnectionFactory Queue Destinataire QueueConnection QueueSession QueueSession + + QueueSender QueueReceiver String selector = new String("(name = 'Bull') or (name = 'IBM'))"); QueueReceiver receiver = session.createreceiver(queue, selector); 25

JMS - "Point-to-Point" Emetteur QueueConnection Messaging QueueConnectionFactory Queue Destinataire QueueConnection QueueSession QueueSession send + + QueueSender QueueReceiver TextMessage msg = session.createtextmessage(); msg.setstringproperty("name","bull"); msg.settext(" "); sender.send(msg); 26

JMS - "Point-to-Point" Emetteur Messaging QueueConnectionFactory Destinataire Queue QueueConnection QueueConnection QueueSession QueueSession send + + receive QueueSender QueueReceiver TextMessage msg = (TextMessage) receiver.receive(); 27

JMS - "Publish/Subscribe" Emetteur Messaging TopicConnectionFactory Destinataire TopicConnection Topic TopicConnection A B TopicSession x y TopicSession TopicConnectionFactory connectionfactory = (TopicConnectionFactory) naming_service.lookup(" "); Topic topic = (Topic) naming_service.lookup("/a/x"); TopicConnection connection = connectionfactory.createtopicconnection(); TopicSession session = connection.createtopicsession( ); 28

JMS - "Publish/Subscribe" Emetteur Messaging TopicConnectionFactory Destinataire TopicConnection Topic TopicConnection A B TopicSession x y TopicSession + TopicPublisher TopicPublisher publisher = session.createpublisher(topic); 29

JMS - "Publish/Subscribe" Emetteur Messaging TopicConnectionFactory Destinataire TopicConnection Topic TopicConnection A B TopicSession x y TopicSession + + TopicPublisher TopicSubscriber Listener TopicSubscriber subscriber = session.createsubscriber(topic); Subscriber.setMessageListener(listener); 30

JMS - "Publish/Subscribe" Emetteur Messaging TopicConnectionFactory Destinataire TopicConnection Topic TopicConnection A B TopicSession x y TopicSession publish + + TopicPublisher TopicSubscriber Listener publisher.publish(msg); 31

JMS - "Publish/Subscribe" Emetteur Messaging TopicConnectionFactory Destinataire TopicConnection Topic TopicConnection A B TopicSession x y TopicSession publish + + TopicPublisher TopicSubscriber Listener void onmessage(message msg) throws JMSException { // unpack and handle the message } onmessage 32

JMS les messages TextMessage (une chaîne de caractères) String data; TextMessage message = session.createtextmessage(); message.settext(data); String data; data = message.gettext(); BytesMessage (tableau de bytes) byte[] data; BytesMessage message = session.createbytemessage(); message.writebytes(data); byte[] data; int length; length = message.readbytes(data); 33

JMS les messages MapMessage (une suite de paire nom-valeur) une valeur est un type primitif MapMessage message = session.createmapmessage(); message.setstring("name", " "); message.setdouble("value", doublevalue); message.setlong("time", longvalue); String name = message.getstring("name"); double value = message.getdouble("value"); long time = message.getlong("time"); 34

JMS les messages StreamMessage (série de valeurs) une valeur est un type primitif La lecture doit respecter l'ordre de l'écriture StreamMessage message = session.createstreammessage(); message.writestring(" "); message.writedouble(doublevalue); message.writelong(longvalue); String name = message.readstring(); double value = message.readdouble(); long time = message.readlong(); 35

JMS les messages ObjectMessage (objet sérialisé) ObjectMessage message = session.createobjectmessage(); message.setobject(obj); obj = message.getobject(); 36

Conclusions Communication par messages Modèle de programmation simple possédant de nombreuses extensions, variantes, bus logiciel à messages, modèles d acteurs, plates-formes à agents, systèmes multi-agents,... très utilisé pour relier entre eux des «outils», existant, indépendants, Attention la simplicité ne peut être qu apparente propagation et récupération des erreurs outils de développement 37