CdLM Informatica (DM 270/2004) Sistemi Distribuiti Publish Subscribe Angelastro Sergio Diomede Antonio Viterbo Tommaso Outline Messaging System Messaging Benefits Synchronous and Asynchronous Call Semantics Peer-to-Peer Comunication Message Queueing System Message Oriented Middleware Observer Design Pattern Java Messaging Service (JMS) Implementing Pusblish/Subscribe w/JMS 0/32 Messaging System La funzionalità di messaggistica è tipicamente fornita da un sistema software separato chiamato Messaging System o Message-oriented middleware (MOM). Il Messaging System coordina e gestisce anche l’invio e la ricezione dei messaggi. Lo scopo principale del Messaging System è di inoltrare i messaggi dai computer sender ai computer receiver in un modello affidabile. La ragione per cui un Messaging System è necessario per inoltrare i messaggi da un computer ad un altro è che i computer e le reti che li connettono sono intrinsecamente inaffidabili. Il vantaggio principale del Messaging System è quello di inoltrare i messaggi fino a quando la rete, il sender o il receiver non saranno pronti alla comunicazione. 1/32 Messaging System Function(1) 2/32 Messaging System Function(2) Send e Forget L’applicazione che invia il messaggio lo invia inserendolo nel canale ad esso adibito. Una volta che l’invio è completato, il sender può andare avanti in altri lavori mentre il Messaging System trasmette il messaggio in background. Il sender può essere fiducioso che il receiver riceverà eventualmente il messaggio e non deve aspettare fino a quando che arriva. 3/32 Messaging System Function(3) Store and Forward: Quando l’applicazione che invia il messaggio lo invia inserendolo nel canale ad esso adibito, il Messaging System immagazzina il messaggio nel computer sender, entrambi in memoria o nel disco. 4/32 Messaging System Function(4) Store and Forward: Il Messaging System spedisce il messaggio inoltrandolo dal computer sender al computer receiver, e poi immagazzina il messaggio di nuovo nel computer receiver. 5/32 Messaging Benefits(1) Throttling Variable Timing Reliable Communication Platform Language Integration Remote Comunication 6/32 Messaging Benefits(2) Asynchronus Communication Thread Manangement Mediation Disconnected Operation 7/32 Synchronous and Asynchronous Call Semantics time blocked Process A call return time Process B Process A message Synchronous Call Semantics Process B Asynchronous Call Semantics 8/32 Peer-to-Peer Comunication Ogni computer (nodo autonomo ed indipendente) può operare indifferentemente come client o come server Consente accessi condivisi a diverse risorse File Priferiche Sensori Non c’è la necessità di un server centrale. 9/32 Publish/Subscribe Comunication VS Client/Server Comunication Client/Server Comunication Publish/Subscribe Comunication Problema: Accoppiamento Spaziale Accoppiamento Temporale Accoppiamento nel flusso delle operazioni Soluzione: Databroker Asincronia 10/32 Publish/Subscribe Comunication I mittenti e i destinatari dialogano per tramite di data manager definiti come [Broker | Dispatcher] che svolgono la funzione di store-and-forward; Il data manager utilizza tecniche di message queueing per organizzare i messaggi ricevuti in tematiche di interesse o in classi diverse; I Mittenti (publisher) pubblicano i loro messaggi sui data manager; I Destinatari (subscriber) si rivolgono al data manager abbonandosi (subscribing) alla ricezione del messaggio a cui sono interessati; Prima della sottoscrizione della ricezione il Destinatario attua un processo di filtering nel quale può precisare la tipologia di messaggi a cui è interessato: Content-based: si sceglie l’informazione in base al contenuto, è una selezione più granulare Item-based: si sceglie l’informazione in base all’argomento di interesse, la probabilità di ricevere messaggi a cui non si è interessati è alta; I Publisher non sanno quanti e quali sono i Subscriber e viceversa: Questo contribuisce alla scalabilità del sistema. 11/32 Message Queueing System 12/32 Message Oriented Middleware 13/32 MOM Publish/Subscribe 14/32 Publish/Subscribe Observer Design Pattern 15/32 Observer Design Pattern Collaborations 16/32 Java Messaging Service (JMS) È un API per la messaggistica a livello enterprise sviluppato da Sun Microsystemn (ora acquisita da Oracle) È un astrazione delle interfacce e classi necessarie per i client di messaggistica quando si vuole comunicare con il Messaging System. JDBC astrae l’accesso ai database relazionali, il JNDI astrae l’accesso ai servizi di naming e directory JMS astrae l’accesso al MOM. Usare JMS, un client dell’applicazione di messaggistica sono portabili attraverso vari MOM. 17/32 JMS Publish Subscribe 18/32 Implementing Pusblish/Subscribe 1.1 2.0 19/32 Implementing Pusblish/Subscribe Development Tools JMS 1.1 API Ambiente di Sviluppo: Eclipse Luna Java Enterprise Enviroment Development kit e Enviroment: Java Development Kit 1.6 e Java Runtime Enviroment 1.6 JMS Server: Jboss 5.0 CR2 20/32 Implementing Pusblish/Subscribe Development Tools JMS 2.0 API Ambiente di Sviluppo: Eclipse Kepler Java Enterprise Enviroment Development kit e Enviroment: Java Development kit 1.8 e Java Runtime Enviroment 1.8 JMS Server: GlassFish 4.0 21/32 JMS Server Settings API 1.1 API 2.0 22/32 JMS Server(1) API 1.1 API 2.0 23/32 JMS Server(2) API 1.1 API 2.0 24/32 JMS Message Creation API 1.1 API 2.0 25/32 JMS Publish(1) API 1.1 26/32 JMS Publish(2) API 2.0 27/32 JMS Subscribe API 1.1 API 2.0 28/32 JMS API 1.1 VS 2.0 Conclusion 1.1 2.0 Semplifica JMS API 1.0 esistenti senza perdere la compatibilità Nuove API che richiedono un minor numero di oggetti JMSContext, JMSProducer… Nel JAVA Enterprise Editon, permette al JMSContext di essere iniettato e gestito dal container Gli oggetti JMS implementano l’AutoCloseable Asincronia dell’invio del messaggio 29/32 JMS API 1.1 Demo DEMO APPLICATION 30/32 JMS API 2.0 Demo DEMO APPLICATION 31/32 REFERENCES Enterprise Integration Patterns Designing, Build, and Delploying Messaging Solution – Gregor Hohpe/Bobby Woolf - Publisher: The Addison-Wesley Signature Series Java Message Service - Richard Monson-Haefel/David A. Chappell Publisher: O'Reilly - First Edition January 2001 - ISBN: 0-596-00068-5 Design Patterns Element s of Reusable Object-Oriented Software - Erich Gamma/Richard Helm/Ralph Johnson/John Vlissides – Publisher AddisonWesley Slide del Corso di Sistemi Distribuiti – Sebastiano Pizzutilo – CdLM Informatica – Università degli Studi Di Bari “Aldo Moro” – a.a. 2014/2015 Implementazione mom basata sul paradigma publish/subscribe e message queueing - Andrea Antonio Garganico 197474 CdLS Ingegneria Informatica (0234) Reti di Calcolatori LS a.a. 2006/2007 Un Meccanismo efficiente per l’implementazione del modello contentbased Publish-Subscribe su sistemi topic-based . Fabio Papale - CdLM Ingegneria Informatica Tesi di Laurea a.a. 2008/2009 32/32