Els serveis de missatgeria "Publish & Subscribe" vs. "Message Queues" Ramon Amat, Eduard Latre Grup T9
Índex de la presentació Els Serveis de Missatgeria Message Queues Publish and Subscribe El model JMS Esquema de Programació Conclusions
Què és? Els serveis de missatgeria són una forma de lliurar informació entre diferents aplicacions distribuïdes per la xarxa. No es tracta de comunicacions intra o inter Sistemes Operatius Distribuïts. Podem distingir entre 2 grans famílies: Sistemes Actius “Publish & Subscribe” Sistemes Passius “Message Queues”
Què són les “Message Queues”? Característiques principals: 1 productor : 1 consumidor Cada tipus de missatge necessita d’una cua específica El consumidor no ha d’estar permanentment connectat a la cua Cada missatge resta a la cua fins que el consumidor el demana o expira Amb o sense garantia d’entrega Aplicacions Indústria financera (transaccions) Correu electrònic A B
Què és “Publish and Subscribe”? (I) Característiques principals: N productors : M consumidors Es parla de TOPIC’s i no de cues Publicació i Subscripció dinàmica a una estructura de continguts. El sistema s’encarrega de publicar els missatges entrants als consumidors pertinents. Només els consumidors registrats i conectats reben el missatge (Restricció temporal) Aplicacions: Indústria financera (cotitzacions) P S
Què és “Publish and Subscribe”? (II) Característiques principals: Els consumidors registrats no tenen pq estar conectats quan es publica el missatge (Relaxació Temporal ). S’anomena Durable Subscription Aplicacions: Sobretot en el sector de les comunicacions mòblis. P S
Proveïdors de Sistemes de Missatgeria Propietaris Durant els darrers 20 anys han predominat els sistemes de las següents companyies · TIBCO/TIB,TIBCO/ActiveEnterprise · IBM's MQSeries · Active Software Standardizats JMS API per Java Softwired, FioranoMQ, Progress Software
Introducció a JMS JMS és l’estàndard de programació “en message oriented middleware”, MOM, en Java. JMS és per sistemes MOM el mateix que JDBC és per a bases de dades: Una interfície estàndard per accedir-hi. JMS és oferta a través de la llibreria (javax.jms) Sun considera JMS com una tecnologia estratègica per oferir comunicacions en entorns distribuïts. Tot venedor d’servidors d’aplicació J2EE ha de suportar JMS! JMS és l’acrònim de "Java Message Service”
Arquitectura API JMS Proveïdor JMS: Implementa la interfície JMS i proporciona eines d’administració i control. Clients JMS: Produeixen i consumeixen missatges. Objectes Administrats: Permeten publicar (bind) destinacions i conectar factories en un entorn JNDI “Java Naming and Directory Interface”. Destinacions Factories de connexió Missatges
Estructura del model JMS Connection Factory: Permet que el client es conecti al proveïdor Connection: Encapsula una conexió virtual amb un proveïdor JMS Repersenta una conexió TCP/IP sobre sockets client/proveïdor Session: Context constituït per un thread per crear productors, consumidors i els mateixos missatges JMS
Estructura del Missatge JMS El missatge JMS consta de: Capçalera: Propietats (opcional) Cos (opcional) i.e. TextMessage, Byte-, Stream-, Object-, MapMessage, Capcelera Cada missatge té un identificador únic ( JMSMessageID ) El topic del missatge és representat per ( JMSDestination ) Capcelera JMS
Programmació API JMS (I) Establiment de Connexio // JNDI - look up for the connection factory Context ctx = new InitialContext(); TopicConnectionFactory tcf =ctx.lookup("TopicConnectionFactory"); // Lookup for a topic and open connexion Topic myTopic = (Topic) ctx.lookup("MyTopic"); TopicConnection tc = tcf.createTopicConnection(); // Open a session for a specific topic TopicSession ts = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Programmació API JMS (II) Productor de Missatges (síncron) // Creació d’un productor TopicPublisher tp = ts.createPublisher(myTopic); // Creació d’un missatge TextMessage message = ts.createTextMessage(); message.setText(“Hello”); // Publicar missatge tp.publish(message);
Programmació API JMS (III) Consumidor de Missatges (síncron) // Creació d’un consumdior TopicSubscriber tsb = ts.createSubscriber(myTopic); // Activació de la conexió tc.start(); // Recepció de missatge TextMessage m = (TextMessage) tsb.receive(1000); //timeout al cap d’un segon System.out.println(“Reading Message” + m.getText());
Què aporta? Aporta una interficie neutra per comunicar-se independentment dels sistemes o aplicacions que utilitzi qualsevol institució o empresa. S’ofereix com un servei de manera que no requereixi coneixements avançats per part dels usuaris. Facilita l’externalització de recursos Les parts deleguen la responsabilitat del lliurament al servei de missatgeria
Un Sistema JMS per comunicacions mòbils
Apendre més - Bibliografia Per obtenir l’especificació completa del Java Message Services: http://java.sun.com/
Els serveis de missatgeria Precs i Preguntes