65
Sistemi Distribuiti M – JMS e Cenni su ESB 1 Java Java Messaging Messaging Service e Service e Enterprise Enterprise Service Bus Service Bus Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2011/2012 Corso di Sistemi Distribuiti M 07 - Java Messaging Service (JMS) e Cenni su Enterprise Service Bus (ESB) Docente: Paolo Bellavista [email protected] http://lia.deis.unibo.it/Courses/sd1112-info/ http://lia.deis.unibo.it/Staff/PaoloBellavista/

Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

  • Upload
    vuongtu

  • View
    223

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 1

Java Java MessagingMessaging Service eService eEnterpriseEnterprise Service BusService Bus

Università di BolognaCdS Laurea Magistrale in Ingegneria Informatica

I Ciclo - A.A. 2011/2012

Corso di Sistemi Distribuiti M

07 - Java Messaging Service (JMS) e Cenni su Enterprise Service Bus (ESB)

Docente: Paolo [email protected]

http://lia.deis.unibo.it/Courses/sd1112-info/

http://lia.deis.unibo.it/Staff/PaoloBellavista/

Page 2: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 2

PerchPerchéé UtilizzareUtilizzareServiziServizi didi Messaging?Messaging?

Comunicazione disaccoppiata (o loosely coupled)

Comunicazione asincrona

Messaggi come strumento principale dicomunicazione fra applicazioni (modello a scambio di messaggi)

È il software di supporto allo scambio di messaggi a fornirele funzionalità di base necessarie

Message Oriented Middleware (MOM), Messaging system, Messaging server, Messaging provider, JMS provider

Page 3: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 3

PerchPerchéé usareusaresistemisistemi didi messaging? messaging?

Indipendenza dalla piattaformaIndipendenza dalla locazione di reteAppropriato per lavorare in ambienti eterogenei

Anonimità– Who?– Where?– When?

Fortemente diverso rispetto a sistemi basati su RPC– CORBA– RMI

non importano

disaccoppiamento nello spazio e nel tempo

Page 4: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 4

ScalabilitàCapacità di gestire un numero elevato di clienti

Senza cambiamenti nella logica applicativaSenza cambiamenti nell’architetturaSenza (grosso) degrado nello throughput di sistema

Si tendono a incrementare le capacità hardware del sistema di messaging se si desidera una maggiorescalabilità complessiva

Robustezzaconsumatori possono avere un faultproduttori possono avere un fault rete può avere un fault

Senza problemi (almeno per un po’ di tempo…) per ilsistema di messaging

PerchPerchéé sistemisistemi didi messaging?messaging?

Page 5: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 5

EsempiEsempi didiApplicazioniApplicazioni didi MessagingMessaging

Transazioni commerciali che usano carte di creditoReport con previsioni del tempoWorkflowGestione di dispositivi di reteGestione di supply chainCustomer care…

Page 6: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 6

Supporto a due modelli di messagingPoint-to-pointPublish/Subscribe

Affidabilità (in che senso?)

Operazioni con logica transazionale

Messaging distribuito, ovviamente (che cosa significa?)

Sicurezza

CaratteristicheCaratteristiche UsualiUsualiper i per i ServiziServizi didi MessagingMessaging

Alcuni sistemi di messaging supportano:Consegna con qualità (garanzie/indicazioni di real-time)Transazioni sicureAuditing, metering, load balancing, …

Page 7: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 7

ModelliModelli didi MessagingMessaging

Point-to-PointUn messaggio è consumato da un singoloricevente

Utilizzato quando ogni messaggio prodotto deveessere processato con successo da un singoloconsumatore

Publish/SubscribeUn messaggio consumato da riceventi multipliAd esempio, una applicazione di bacheca per richieste di lavoro. Creazione di un nuovo topic (argomento) di nome “new hire”; diverse applicazioni possono sottoscrivere(subscribe/abbonarsi) il proprio interesse al topic “new hire”

Page 8: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 8

PointPoint--toto--PointPoint

Un messaggio è consumato da un singolo riceventeCi possono essere produttori multipli, ovviamente

La “destinazione" di un messaggio è una coda con nome (named queue)FIFO (per lo stesso livello di priorità)Produttori inviano messaggi a named queue specificando un livello di priorità desiderato

QueueQueueClient

Senders SendsConsumes

Acknowledges

Client Receiver

Receives messages on Receives messages on the queuethe queue

Posts messages to the Posts messages to the queuequeue

Page 9: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 9

Publish/Subscribe (Pub/Sub)Publish/Subscribe (Pub/Sub)

ClientSender Sends

Consumes

Acknowledges

Client Receiver

Client Publisher Publishes

Delivers

Subscribes

Topic

SubscribesClient

subscriber

Delivers

Client subscriber

Client Publisher Topic

Client subscriber

Client subscriber

Publishes

Subscribes

Delivers

Subscribes

Subject of Subject of communicationcommunication

Available to registered Available to registered participantsparticipants

DeliversPosts messages to the

topic

Receives messages on the topic

Un messaggio consumato da riceventi multipli

La “destinazione" di un messagggio è un argomento con nome (named topic)

Produttori pubblicano su un topic

Consumatori si “abbonano” a un topic

Page 10: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 10

AffidabilitAffidabilitàà dellodelloScambioScambio didi MessaggiMessaggi

Alcune garanzie nella consegna dei messaggiGradi differenti di affidabilità (reliability) sono possibiliProduttore può specificare diversi livelli direliabilityAffidabilità più elevata va tipicamente di pari passocon minore throughput

Di solito i supporti ai sistemi di messaging utilizzanostorage persistente per preservare i messaggi

Page 11: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 11

OperazioniOperazioni sui sui MessaggiMessaggicon con ProprietProprietàà TransazionaliTransazionali

Produzione transazionaleProduttore può raggruppare una serie di messaggiin un’unica transazioneO tutti i messaggi sono accodati con successo o nessuno

Consumo transazionaleConsumatore riceve un gruppo di messaggi come serie di oggetti con proprietà transazionaleFino a che tutti i messaggi non sono staticonsegnati e ricevuti con successo, i messaggirimangono mantenuti permanentemente nellaloro queue o topic

Page 12: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 12

Scope Scope delladellaTransazionalitTransazionalitàà

Scope client-to-messaging systemLe proprietà di transazionalità riguardanol’interazione fra ogni cliente e il sistema dimessagingJMS supporta questo tipo di scope

Scope client-to-clientLe proprietà di transazionalità riguardanol’insieme delle applicazioni produttore-consumatore per quel gruppo di messaggiNon supportato da JMS

Page 13: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 13

Application 1 Queue Application 2

Messaging system

Application 1 Queue Application 2

Messaging system

Scope Scope delladellaTransazionalitTransazionalitàà

client-to-messaging system

client-to-client

Ovviamente il sistema di messaging può essere distribuito a sua volta

Sistemi di enterprise messaging possono realizzare una infrastruttura in cui i messaggi sono scambiati fra server nel distribuito

Page 14: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 14

SupportoSupporto allaalla SicurezzaSicurezza

AutenticazioneI sistemi di messaging richiedono usualmente aiclienti di presentare certificati digitali con signature

Confidenzialità dei messaggiUsualmente encryption dei messaggi

Integrità dei messaggiUsualmente integrità dei dati tramite digest deimessaggi

Sicurezza è gestita in modo dipendente dalvendor del sistema di messaging

Page 15: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 15

JMSJMS

JMS come insieme di interfacce Java (e associata definizionedi semantica) che specificano come un cliente JMS possaaccedere alle funzionalità di un sistema di messaging genericoSupporto alla produzione, distribuzione e consegna dimessaggiSupporto a diverse semantiche per message delivery

Sincrona/asincrona, con proprietà transazionali, garantita, durevole

Supporto sia a modello Point-to-Point (reliable queue)che Publish/Subscribe

Selettori di messaggio lato ricevente5 tipologie di messaggi possibili

Page 16: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 16

ObiettiviObiettivi didi Design Design didi JMSJMS

JMS è parte della piattaforma J2EE. Obiettivi:Consistenza con le API dei sistemi di messaging esistentiIndipendenza dal vendor del sistema di messaging Copertura della maggior parte delle funzionalitàcomuni nei sistemi di messagingPromuovere la tecnologia Java

Java™ ApplicationJava™ Application

JMS APIJMS API

JMS Provider

JMS Provider

IBMMQSeries

IBMMQSeries

JMS Provider

JMS Provider

ProgressSonicMqProgressSonicMq

JMS Provider

JMS Provider

FioranoFiorano

JMS Provider

JMS Provider

JMS Provider

JMS Provider

BEABEA SUN MQSUN MQ

Page 17: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 17

ComponentiComponenti ArchitetturaliArchitetturalididi JMSJMS

Clienti JMS e non-JMSMessaggiProvider JMS (sistema di messaging)Oggetti amministrati tramite JNDI

DestinationConnectionFactory

JMS Application(JMS Client)

JMS provider(vendor specific)

JMS API(vendor neutral)

Messaging service

JMS Application(JMS Client)

JMS provider(vendor specific)

JMS API(vendor neutral)

Page 18: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 18

Domini JMS Domini JMS ((StiliStili didi Messaging)Messaging)

Point-to-Pointi messaggi in una queue possono essere persistenti o non persistenti

Pub/SubNon durevoli (i messaggi sono disponibili solo durantel’intervallo di tempo in cui il ricevente è attivo; se il ricevente non èconnesso, la semantica è di perdere ogni messaggio prodottoin sua assenza)

Durevole (i messaggi sono mantenuti dal sistema, che fa le veci dei riceventi non connessi al tempo della produzione deimessaggi)

Page 19: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 19

MessaggiMessaggi JMSJMS

Messaggi come modalità di comunicazionedisaccoppiata fra le applicazioniI veri formati che attualmente sono utilizzati per l’encoding dei messaggi sono fortemente dipendentidal provider del sistema di messaging

Un sistema di messaging può interoperarecompletamente solo al suo interno

JMS fornisce quindi solo un modello astratto e unificato per la rappresentazione interoperabile deimessaggi attraverso le sue interfacce

MessageHeader

Properties

Body

Page 20: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 20

Message Header + Message Header + ProprietProprietàà

Utilizzato per l’identificazione del messaggio e il suoroutingInclude la destination e

modalità di consegna (persistente, non persistente), timestamp, priorità, campo ReplyTo

Elenco delle proprietà: JMSDestination, JMSDeliveryMode(persistente o no), JMSMessageID, JMSTimeStamp, JMSRedelivered, JMSExpiration, JMSPriority, JMSCorrelationID, JMSReplyTo (destinazione fornita dal produttore, dove inviare la risposta), JMSType (tipo del corpo del messaggio)

Proprietà dei messaggi (coppie nome/valore) possono essere: campi application-specific, campi dipendenti da e specifici di un particolare sistema di messaging, campi opzionali

Page 21: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 21

CorpoCorpo del del MessaggioMessaggio(Message Body)(Message Body)

Mantiene, ovviamente, il contenuto del messaggioSupporto per diversi tipi di contenuto, ogni tipodefinito da una interfaccia:

StreamMessage, MapMessage, TextMessage, ObjectMessage, BytesMessage

Ad esempio:StreamMessage contiene valori primitivi e supporta letturasequenzialeMapMessage contiene coppie nome/valore e supportalettura sequenziale o by nameBytesMessage contiene byte “non interpretati” e vieneutilizzato di solito per fare match con formati preesistenti

Page 22: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 22

SempliciSemplici EsempiEsempididi CreazioneCreazione didi MessaggiMessaggi

Per creare un semplice TextMessage:TextMessage message =

session.createTextMessage();

message.setText("greetings");

Per creare un semplice ObjectMessage:

ObjectMessage message =session.createObjectMessage();

message.setObject(myObject);

NOTA: myObject deve implementarejava.io.Serializable

Page 23: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 23

InterfacciaInterfaccia DestinationDestination

Rappresenta l’astrazione di un topic o diuna queue (non di un ricevitore di messaggi!)

Interfacce figlie per Queue e Topic

Destination(from jms)

<<Interf ace>>

Topic

getTopicName() : StringtoString() : String

(from jms)

<<Interf ace>> Queue

getQueueName() : StringtoString() : String

(from jms)

<<Interf ace>>

Page 24: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 24

InterfacciaInterfaccia ConnectionFactoryConnectionFactory

Classe factory per creare una connessioneprovider-specific verso il server JMSSimile al gestore di driver (java.sql.DriverManager) in JDBC, per chi se lo ricorda…

Interfacce figlie per QueueConnectionFactory e TopicConnectionFactory

ConnectionFactory(from jms)

<<Interface>>

QueueConnectionFactory

createQueueConnection()createQueueConnection()

(from jms)

<<Interf ace>>TopicConnectionFactory

createTopicConnection()createTopicConnection()

(from jms)

<<Interface>>

Page 25: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 25

InterfacciaInterfaccia ConnectionConnection

Astrazione che rappresenta un singolo canale dicomunicazione verso il provider JMSConnessione viene creata da un oggetto ConnectionFactoryConnessione dovrebbe essere chiusa quando si è terminato diutilizzare la risorsa

QueueConnection

createQueueSession()createConnectionConsumer()

(f rom jms)

<<Interface>>TopicConnection

createTopicSession()createConnectionConsumer()createDurableConnectionConsumer()

(f rom jms)

<<Interface>>

Connection

getClientID()setClientID()getMetaData()getExceptionListener()setExceptionListener()start()stop()close()

(f rom jms)

<<Interface>>

Page 26: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 26

InterfacciaInterfaccia SessionSession

Creata da un oggettoConnection

Una volta connessi al JMS provider attraverso unaConnection, tutte le operazionisi svolgono nel contesto diuna Session attiva

Una sessione è single-threaded, ovvero ognioperazione di invio e ricezione dimessaggio avviene in modoserializzato

Le sessioni realizzano un contesto con proprietàtransazionali

Session

$ AUTO_ACKNOWLEDGE : int = 1$ CLIENT_ACKNOWLEDGE : int = 2$ DUPS_OK_ACKNOWLEDGE : int = 3

createBytesMessage()createMapMessage()createMessage()createObjectMessage()createObjectMessage()createStreamMessage()createTextMessage()createTextMessage()getTransacted()commit()rollback()close()recover()getMessageListener()setMessageListener()run()

(from jms)

<<Interface>>

QueueSession

createQueue()createReceiver()createReceiver()createSender()createBrowser()createBrowser()createTemporaryQueue()

(from jms)

<<Interface>>TopicSession

createTopic()createSubscriber()createSubscriber()createDurableSubscriber()createDurableSubscriber()createPublisher()createTemporaryTopic()unsubscribe()

(from jms)

<<Interface>>

Page 27: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 27

InterfacceInterfacce MessageProducerMessageProducere e MessageConsumerMessageConsumer

Per inviare un messaggio verso unaDestination, il cliente deverichiedere esplicitamenteall’oggetto Session di creare un oggetto MessageProducer

Analogamente interfacciaMessageConsumerClienti che vogliono riceveremessaggi creano un oggettoMessageConsumer (collegato ad un oggetto Destination) attraversoSessionDue modalità di ricezione deimessaggi: blocking, non-blocking

QueueSender

getQueue()send()send()send()send()

(from jms)

<<Interf ace>>

MessageProducer

setDisableMessageID()getDisableMessageID()setDisableMessageTimestamp()getDisableMessageTimestamp()setDeliv ery Mode()getDeliv ery Mode()setPriority ()getPriority ()setTimeToLiv e()getTimeToLiv e()close()

(from jms)

<<Interf ace>>

TopicPublisher

getTopic()publish()publish()publish()publish()

(from jms)

<<Interf ace>>

Page 28: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 28

ModalitModalitàà didi RicezioneRicezioneBlocking e NonBlocking e Non--blockingblocking

Modalità blocking: solito metodo receive() bloccanteModalità non blocking:

Cliente registra un oggetto MessageListenerQuando un messaggio è disponibile, il provider JMS richiama ilmetodo onMessage() di MessageListener (callback)

TopicSubscriber

getTopic()getNoLocal()

(from jms)

<<Interface>>QueueReceiver

getQueue()

(from jms)

<<Interface>>

MessageConsumer

getMessageSelector()getMessageListener()setMessageListener()receive()receive()receiveNoWait()close()

(from jms)

<<Interface>>

Page 29: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 29

RiassuntoRiassunto ““graficografico”” delledelle API JMSAPI JMS

Page 30: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 30

JMS APIsJMS APIs

Page 31: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 31

EsempiEsempi PraticiPratici::PassiPassi per per CostruireCostruire unauna ApplicazioneApplicazione JMS SenderJMS Sender

1. Ottenere un oggetto ConnectionFactory e un oggettoDestination (Topic o Queue) attraverso JNDI

2. Creare una Connection 3. Creare una Session per inviare/ricevere messaggi4. Creare un oggetto MessageProducer (TopicPublisher o

QueueSender)

5. Avviare la Connection6. Inviare o pubblicare messaggi7. Chiudere Session e Connection

Page 32: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 32

OggettiOggetti ConnectionFactoryConnectionFactorye Destination via JNDIe Destination via JNDI

// Ottiene oggetto InitialContextContext jndiContext = new InitialContext();

// Trova l’oggetto ConnectionFactory via JNDI TopicConnectionFactory factory =

(TopicConnectionFactory) jndiContext.lookup("MyTopicConnectionFactory");

// Trova l’oggetto Destination via JNDI // (Topic o Queue) Topic weatherTopic =

(Topic) jndiContext.lookup("WeatherData");

Page 33: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 33

OggettiOggetti ConnectionConnectione Sessione Session

// Richiede la creazione di un oggetto Connection// all’oggetto ConnectionFactoryTopicConnection topicConnection =

factory.createTopicConnection();

// Crea un oggetto Session da Connection:// primo parametro controlla transazionalità// secondo specifica il tipo di ackTopicSession session =

topicConnection.createTopicSession (false,session.CLIENT_ACKNOWLEDGE);

Page 34: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 34

// Richiede la creazione di un oggetto MessageProducer// all’oggetto Session// TopicPublisher per Pub/Sub// QueueSender per Point-to-PointTopicPublisher publisher =

session.createPublisher(weatherTopic);

// Avvia la Connection// Fino a che la connessione non è avviata, il// flusso dei messaggi non comincia: di solito// Connection viene avviata prima dell’invocazione// dei metodi per la trasmissione messaggitopicConnection.start();// Creazione del messaggioTextMessage message = session.createMessage();message.setText("text:35 degrees");// Invio del messaggiopublisher.publish(message);

MessageProducerMessageProducer eeAvvioAvvio delladella ConnectionConnection

Page 35: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 35

EsempiEsempi PraticiPratici::PassiPassi per per RiceventeRicevente JMS (nonJMS (non--blocking)blocking)

1. Ottenere oggetti ConnectionFactory e Destination (Topic o Queue) tramite JNDI

2. Creare un oggetto Connection

3. Creare un oggetto Session per inviare/ricevere messaggi

4. Creare un oggetto MessageConsumer(TopicSubscriber o QueueReceiver)

5. Registrare MessageListener per modalità non-blocking6. Avviare la Connection

7. Chiudere Session e Connection

Page 36: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 36

// Crea oggetto Subscriber da SessionTopicSubscriber subscriber =

session.createSubscriber(weatherTopic);

// Crea oggetto MessageListenerWeatherListener myListener

= new WeatherListener();

// Registra MessageListener per l’oggetto// TopicSubscriber desideratosubscriber.setMessageListener(myListener);

OggettiOggetti TopicSubscriberTopicSubscribere e MessageListenerMessageListener

Page 37: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 37

AffidabilitAffidabilitàà deidei MessaggiMessaggi

Modalità massimamente affidabile per l’invio di un messaggio: messaggio PERSISTENT all’interno di unatransazioneModalità massimamente affidabile per il consumo diun messaggio: ricezione all’interno di una transazione, sia nel caso di ricezione da queue che tramite“abbonamento” durevole a un topic

Basic ReliabilityControllo ack dei messaggiUtilizzo di messaggi persistentiConfigurazione dei livelli di prioritàConsentire expiration di messaggi

Advanced Reliability“Abbonamenti” durevoli (durable subscription)Utilizzo di transazioni “locali”

Page 38: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 38

RicezioneRicezione e ACKe ACK

Alla ricezione, il cliente riceve e processa il messaggio

Dopo, se necessario, ACK del messaggioAcknowledgment è cominciato dal provider JMS o dal cliente, in dipendenza dalla modalità di ACK scelta per la sessione

In sessioni con transazionalità (transacted)ACK automatico al commitment della transazioneIn caso di roll-back della transazione, in seguito tutti i messaggigià consumati prima del roll-back sono ri-inviati

In sessioni non-transactedACK (quando e come) dipende dal valore specificato come secondo parametro del metodo createSession()

Page 39: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 39

Tipi Tipi didi ACKACK

Auto acknowledgment (AUTO_ACKNOWLEDGE)ACK automatico dopo il ritorno con successo dei metodiMessageConsumer.receive() o MessageListener.onMessage(). Possono esserci messaggi duplicati?

Client acknowledgment (CLIENT_ACKNOWLEDGE)Il cliente deve esplicitamente invocare il metodo acknowledge()dell’oggetto Message. ACK di un messaggio è cumulativo sui precedenti non-ack’ed

Lazy acknowledgment (DUPS_OK_ACKNOWLEDGE)Overhead minimo per provider JMS; invio “saltuario” di ack anchecumulativi; possibilità di messaggi duplicati (duplicate-tolerant application, idempotenza)

Page 40: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB

Ad esempio, per AUTO_ACK

Prospettiva latoproduttore e consumatoreDifferenze fra casopersistent e non-persistentQuando ci possonoessere messaggiduplicati?Quando ci può essereperdita di messaggi?

Inoltre, tre casi di ackdifferenziati

Page 41: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 41

PersistenzaPersistenza::2 2 ModalitModalitàà didi ConsegnaConsegna

PERSISTENTDefaultSpecifica al provider JMS di garantire che il messaggio non sia perso quando in transito, ad esempio a causa di un guasto del provider JMS

NON_PERSISTENTNON richiede la memorizzazione dei messaggi lato JMS providerMigliori risultati di performance

Metodo SetDeliveryMode() nell’interfaccia MessageProducerproducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

forma estesa: producer.send(message, DeliveryMode.NON_PERSISTENT, 3,10000);

Page 42: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 42

PrioritPrioritàà e Expiratione Expirationnellanella ConsegnaConsegna deidei MessaggiMessaggi

10 livelli di prioritàda 0 (più basso) a 9 (più alto)default = 4

Uso del metodo setPriority() dell’interfacciaMessageProducer, ad esempio producer.setPriority(7);

o la forma estesa producer.send(message, DeliveryMode. NON_PERSISTENT, 7, 10000);

Expiration: possibilità di configurare TTL tramitesetTimeToLive() dell’interfaccia MessageProducer

producer.setTimeToLive(60000);

o forma estesa, producer.send(message, DeliveryMode.NON_PERSISTENT, 3, 60000);

Page 43: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 43

ConfigurazioneConfigurazione LivelliLivellididi AffidabilitAffidabilitàà

Spesso scelte di default o prese alla creazione di DestinationBasic Reliability

PersistenzaA livello di singolo messaggio, ad es. interfaccia MessageProducer

Controllo degli ACKA livello di sessione, interfaccia Session

Livelli di prioritàA livello di singolo messaggio, ad es. interfaccia MessageProducer

Expiration timeA livello di singolo messaggio, ad es. interfaccia MessageProducer

Advanced ReliabilitySottoscrizione durevole

A livello di sessione, interfaccia Session

TransazionalitàA livello di sessione, interfaccia Session

Page 44: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 44

Come Come FunzionanoFunzionanole Durable Subscription?le Durable Subscription?

Un durable subscriber si registra specificando unaidentità univocaIn seguito, oggetti subscriber che hanno la medesimaidentità “recuperano l’abbonamento” (subscription resume) esattamente nello stato in cui è stato lasciatodal subscriber precedenteSe un durable subscription non ha clienti attivi, ilprovider JMS mantiene i messaggi fino a che questi non vengono effettivamente consegnati oppure alla loroexpirationAll’interno di una singola applicazione Java, una sola session puòavere durable subscription ad un determinato named topic in un determinato istante

Page 45: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 45

TransazioniTransazioni JMSJMS

Lo scope delle transazioni in JMS è SOLO fra clienti e sistema di messaging, non fra produttori e consumatori

Un gruppo di messaggi è consegnato come una unica unità (latoproduttore)Un gruppo di messaggi è ricevuto come una unica unità (latoconsumatore)

Transazioni “locali”Controllate dall’oggetto Session

Transazione comincia implicitamente quando l’oggetto disessione è creatoTransazione termina all’invocazione di Session.commit() o Session.abort()La sessione è transazionale se si specifica il flag appropriatoall’atto della creazione. Ad esempio:QueueConnection.createQueueSession(true, ..)

Page 46: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 46

TransazioniTransazioni DistribuiteDistribuite in JMSin JMS

Transazioni “distribuite”Devono essere coordinate da un transactional manager esterno come Java Transactions API (JTA)

Applicazioni possono controllare la transazione attraversometodi JTA

Utilizzo di Session.commit() e Session.rollback() è non consentito

In questo modo, operazioni di messaging possono esserecombinate con transazioni DB in una singola transazionecomplessiva

Page 47: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 47

SelettoriSelettori didi MessaggiMessaggi JMSJMS

Lato receiver, le applicazioni JMS possono utilizzareselettori per scegliere i soli messaggi che sonopotenzialmente di loro interesseSelettori come stringhe SQL92 che specificano regole difilteringSelettori non possono riferire il contenuto deimessaggi, ma solo proprietà e headerAd esempio:

JMSType==’wasp’

phone LIKE ‘223’

price BETWEEN 100 AND 200

name IN(‘sameer’,’tyagi’)

JMSType IS NOT NULL

Page 48: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 48

JMS e Message Driven BeanJMS e Message Driven Bean

JMS Provider

EJB Container

Destin-ation

ConsumerInstances

Msg-drivenBean Class

MDB istanziato in modo asincrono quando un messaggio è ricevuto

OrderBean

InventoryManagement

Bean

Mail

MessageDrivenBean

JMS Topics

Publish/subscribe

ProcessOrder

Procure Inventory

<Entity EJB>

<Entity EJB>

Logica di business nel metodo di ricezione del messaggio, ad esempio per modificare entity beano produrre un email di conferma

Page 49: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 49

Generalizzando Generalizzando ““in modo arditoin modo ardito””::

Integrazione tramite ESBIntegrazione tramite ESBProblemi nel campo dellProblemi nel campo dell’’integrazioneintegrazione

diversi ambienti di esecuzione, di management, diversi ambienti di esecuzione, di management, ……sistemi e servizi proprietari differenti, anche legacysistemi e servizi proprietari differenti, anche legacyconfini fisiciconfini fisici

“A new form of enterprise service bus (ESB)infrastructure – combining message-orientedmiddleware, Web services, transformation and routing intelligence - will be running in the majority ofenterprises by 2005.” [Roy Schulte, Vice President of Gartner Inc., 2002]

ESB come infrastruttura software per l’integrazione, basata su “standard”, che combina messaging, Web services, data transformation e routing intelligence per connettere tra loro in modo debolmente accoppiato e affidabile un numero significativo di applicazioni eterogenee, mappate come servizi

[David Chappell, ESB, O’Reilly, 2004]

Page 50: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 50

MessageMessage OrientedOriented Middleware Middleware ed ESBed ESB

Infrastruttura per la comunicazione tra Infrastruttura per la comunicazione tra applicazioni basata sullo applicazioni basata sullo scambio di messaggiscambio di messaggi

Modello sincrono vs. Modello sincrono vs. modello asincronomodello asincronoModello p2p vs. Modello p2p vs. pubpub--subsub

Caratteristiche generaliCaratteristiche generaliDisaccoppiamentoDisaccoppiamentoGestione dei Gestione dei ““topictopic””Controllo degli accessiControllo degli accessiStruttura messaggiStruttura messaggiQoS configurabileQoS configurabile

Page 51: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 51

ServiceService OrientedOriented Architecture (SOA)Architecture (SOA)

Paradigma basato su:

Servizi autonomiInterfacce che definiscono contratti tra Consumer e ProviderMessaggi che compongono le operazioni invocabili sui serviziRegistri dei serviziPossibilità di comporre i servizi in processi di business

Obiettivo è ottenere:

Accoppiamento debole, e quindi...Flessibilità di businessInteroperabilità tra le applicazioniIndipendenza rispetto alle tecnologie di implementazione

Page 52: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 52

Web ServiceWeb Service

InfrastrutturaInfrastruttura per lper l’’interazione tra applicazioni basata sul interazione tra applicazioni basata sul concetto di concetto di ““servizioservizio””Sfrutta Sfrutta essenzialmente tre tecnologieessenzialmente tre tecnologie::

SOAPSOAP descrizione messaggi scambiati e descrizione messaggi scambiati e bindingbindingprotocollo di trasporto utilizzato protocollo di trasporto utilizzato (usualmente HTTP)(usualmente HTTP)WSDLWSDL descrizione servizio svolto dal providerdescrizione servizio svolto dal providerUDDIUDDI discovery di servizi discovery di servizi directory service (pattern directory service (pattern ““findfind--bindbind--invokeinvoke””))

SOAP e WSDL si basano su XMLSOAP e WSDL si basano su XML

Page 53: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB

Web Service Web Service DescriptionDescription LanguageLanguage (WSDL)(WSDL)

WSDLWSDL e chiara separazione fra e chiara separazione fra livello astrattolivello astratto (definizione (definizione operazioni di servizio e struttura messaggi)operazioni di servizio e struttura messaggi) e e livello concretolivello concreto((bindingbinding –– per ogni interfaccia, uno o piper ogni interfaccia, uno o piùù endpointendpoint con indirizzo di rete con indirizzo di rete e protocollo)e protocollo), tipico di tutte le soluzioni SOA, tipico di tutte le soluzioni SOA

Page 54: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 54

Usualmente messaggi inUsualmente messaggi in eXtensibleeXtensibleMarkup Markup LanguageLanguage (XML)(XML)

XML XML èè gigiàà noto nei dettagli a tutti, vero noto nei dettagli a tutti, vero ☺☺??

Standard W3CStandard W3CLinguaggio di markup che consente di definire Linguaggio di markup che consente di definire tagtagpersonalizzatipersonalizzatiObiettivo principale: facilitare scambio dati tra sistemi Obiettivo principale: facilitare scambio dati tra sistemi differentidifferenti

PROPROhumanhuman e e machinemachine readablereadablestrutturato e gerarchicostrutturato e gerarchico adatto per modellare datiadatto per modellare datiautoauto--descrittivodescrittivo, , platformplatform--independentindependent, , estensibileestensibile

CONTRO:CONTRO:ridondante e verbosoridondante e verboso limite alllimite all’’efficienzaefficienzalimitato rispetto al modello limitato rispetto al modello EntityEntity RelationshipRelationshipnon adatto per dati non strutturatinon adatto per dati non strutturati

Page 55: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 55

XML: Tecnologie CorrelateXML: Tecnologie Correlate

Molte tecnologie per la manipolazione di documenti Molte tecnologie per la manipolazione di documenti XML:XML:

XSLTXSLT linguaggio dichiarativo per linguaggio dichiarativo per trasformazione trasformazione di XML in altri formati di XML in altri formati (XML, HTML, (XML, HTML, plainplain text, text, ……))XPathXPath linguaggio per llinguaggio per l’’estrazione di dati da estrazione di dati da documenti XMLdocumenti XML

ElaborazioneElaborazione XML:XML:SAXSAX insiemeinsieme didi API per API per elaborazioneelaborazione basatabasata susueventieventiDOMDOM insiemeinsieme didi API API cheche modellanomodellano documentodocumentoXML come XML come alberoalbero didi nodinodi

Page 56: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 56

Approccio ConvenzionaleApproccio Convenzionaleallall’’IntegrazioneIntegrazione

Solo Solo 10% delle applicazioni 10% delle applicazioni èè integratointegrato (dati Gartner Inc.) e e solo 15% di queste sfruttano middleware ad solo 15% di queste sfruttano middleware ad hochoc……ComCom’è’è collegato il restante 85%? Perchcollegato il restante 85%? Perchéé le tecnologie le tecnologie passate si sono rivelate inadeguate?passate si sono rivelate inadeguate?

Architettura casualeArchitettura casualeÈÈ il risultato della composizione di diverse soluzioni il risultato della composizione di diverse soluzioni adottate per i diversi sistemi nel corso degli anniadottate per i diversi sistemi nel corso degli anniCol tempo presenta:Col tempo presenta:

alti costi di mantenimentoalti costi di mantenimentorigiditrigiditàà (applicazioni (applicazioni tightlytightly--coupledcoupled))prestazioni insoddisfacenti (prestazioni insoddisfacenti (scarsa scalabilitscarsa scalabilitàà))

Page 57: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 57

EnterpriseEnterprise ApplicationApplicationIntegrationIntegration (EAI)(EAI)

Approccio Approccio ExtractExtract, , TransformTransform, and , and LoadLoadDownload e upload continuiDownload e upload continui

↓↓rischio di introdurre incoerenzerischio di introdurre incoerenzeAlta latenza del processoAlta latenza del processo

Applicazione Applicazione principi architetturaliprincipi architetturali allo scopo di allo scopo di integrare integrare efficacementeefficacemente applicazioni di unapplicazioni di un’’organizzazioneorganizzazioneBroker + Broker + orchestrationorchestration engineengineDue topologie principali: Due topologie principali: hubhub--andand--spokespoke o buso busImplementazioni generalmente proprietarie e alto costoImplementazioni generalmente proprietarie e alto costo

Page 58: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 58

EAI: EAI: HubHub--andand--SpokeSpoke

PRO:PRO:facilitfacilitàà di gestione di gestione (centralizzata)(centralizzata)

CONTRO:CONTRO:hubhub punto critico di punto critico di centralizzazionecentralizzazioneridotta scalabilitridotta scalabilitàà

↓↓architettura architettura federatafederata

Page 59: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 59

EAI: EAI: Bus di InterconnessioneBus di Interconnessione

PRO:PRO:maggiore scalabilitmaggiore scalabilitàà(architettura meno (architettura meno centralizzata)centralizzata)

CONTRO:CONTRO:a costo di maggiori a costo di maggiori difficoltdifficoltàà di gestionedi gestione

Page 60: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 60

EnterpriseEnterprise ServiceService BusBus

Middleware per l'integrazione di

servizi basato sul paradigma SOA

Caratteristiche:Uniformità nell'accesso ai serviziCapacità di orchestrarne l'integrazione mediandone le incompatibilitàFunge da registro dei serviziAgisce come punto centralizzato di gestione

Page 61: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 61

ESB: Concetti ChiaveESB: Concetti ChiaveArchitettura altamente distribuita e integrazione basata Architettura altamente distribuita e integrazione basata su standardsu standardServizi di Servizi di orchestrationorchestrationAutonomiaAutonomia delle singole applicazionidelle singole applicazioniRealReal--time throughput; stime throughput; servizi di auditing e ervizi di auditing e loggingloggingConsente adozione incrementaleConsente adozione incrementale

Invocazione dei serviziInvocazione dei servizi::Servizi completamente disaccoppiatiServizi completamente disaccoppiatiPattern Pattern ““findfind--bindbind--invokeinvoke”” èè gestito automaticamente gestito automaticamente dalldall’’infrastrutturainfrastrutturaProgettista deve solo definire Progettista deve solo definire itinerario logico che i itinerario logico che i messaggi devono seguire;messaggi devono seguire; servizi si servizi si ““limitanolimitano”” a inviare e a inviare e ricevere ricevere messaggimessaggi……

Page 62: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 62

Java Business Java Business Integration Integration (JBI)(JBI)JSR 208, Java Business Integration (JBI), 2005(specifica Java di ESB Standard)Servizi offerti e consumati da componentiInterazione tra componenti mediata da NormalizedMessage Router (NMR)Gestione attraverso strumenti JMX-compliant

Tipologie di componenti:Service Engine – responsabili della logica di business, offrono servizi implementati in Java; forniscono logica di integrazione e di trasformazione verso altri componenti; a loro volta possono utilizzare i servizi degli altri SE

Binding Component – consentono fruizione di servizi esterni all'environmentda parte di servizi interni e viceversa. Fungono da adattatori di protocollo

Page 63: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB 63

NormalizedNormalized MessageMessageRouter (NMR)Router (NMR)

Comunicazione tra componenti allComunicazione tra componenti all’’interno del bus interno del bus NON NON èèdirettadiretta. NMR che agisce da mediatore fra i vari . NMR che agisce da mediatore fra i vari componenticomponentiCompito dellCompito dell’’NMRNMR

RoutingRouting dei messaggi tra 2 o pidei messaggi tra 2 o piùù componenticomponentiDisaccoppiare Service Consumer da Service Provider garantendo Disaccoppiare Service Consumer da Service Provider garantendo un basso accoppiamento tra i componenti JBIun basso accoppiamento tra i componenti JBI

Messaggi in formato XMLMessaggi in formato XMLComunicazione "technology-neutral" tra endpoint. Normalizedmessage scambiati sono definiti in formato indipendente e neutrale da qualsiasi specifica applicazione, tecnologia o protocollo di comunicazioneTrasformazioni di formato trasformazioni XSLT

Page 64: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB

Interposizione di JBI Interposizione di JBI nello Scambio di Messagginello Scambio di Messaggi

Componenti SOA e modello a scambio di messaggi basato Componenti SOA e modello a scambio di messaggi basato su interposizione:su interposizione:

Elevato grado di disaccoppiamento tra componentiElevato grado di disaccoppiamento tra componentiPossibilitPossibilitàà di operare su messaggi (trasformazioni) in modo di operare su messaggi (trasformazioni) in modo trasparentetrasparente

Page 65: Java Messaging Service e Enterprise Service Buslia.deis.unibo.it/Courses/sd1112-info/lucidi/07-JMS(1x).pdfSistemi Distribuiti M – JMS e Cenni su ESB 1 Java Messaging Service e Enterprise

Sistemi Distribuiti M – JMS e Cenni su ESB

JBI JBI MessageMessage Exchange PatternExchange Pattern

JBI supporta almeno 4 pattern di scambio messaggi:InIn--OnlyOnly per interazione per interazione oneone--wayway

RobustRobust InIn--OnlyOnly per possibilitper possibilitàà di segnalare fault a livello applicativodi segnalare fault a livello applicativo

InIn--OutOut per per interazione interazione requestrequest--responseresponse con con possibilitpossibilitàà fault lato fault lato providerprovider

In OptionalIn Optional--Out Out per provider con per provider con risposta opzionale e risposta opzionale e possibilitpossibilitàà di di segnalare fault da segnalare fault da provider/consumerprovider/consumer