.. sectnum:: JMS/OpenMQ ========== Slajdy do wykładu ----------------- * Message Oriented Middleware — w formacie PDF w układzie: `1 sl./str. `_, `2 sl./str. `_, `3 sl./str. `_, `4 sl./str. `_, `6 sl./str. `_. * JMS — wykład Cezarego Sobańca `1 sl./str. `_ * JMS — `Tutorial `_ Zagadnienia laboratoryjne ------------------------- .. contents:: Spis treści :depth: 1 :local: :backlinks: none Klejkowanie komunikatów (komunikacja P2P) +++++++++++++++++++++++++++++++++++++++++ 1. Utworzenie fabryki połączeń :: javax.jms.ConnectionFactory fact = new com.sun.messaging.ConnectionFactory(); 2. Utworzenie połączenia :: javax.jms.Connection conn = fact.createConnection(); 3. Utworzenie sesji :: javax.jms.Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); 4. Utworzenie kolejki :: javax.jms.Queue que = new com.sun.messaging.Queue("kolejka1"); Umieszczanie komunikatu w kolejce ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Utworzenie producenta :: javax.jms.MessageProducer prod = sess.createProducer(que); 2. Utworzenie komunikatu :: javax.jms.TextMessage tmsg = sess.createTextMessage("Hej!"); 3. Otwarcie połączenia :: conn.start(); 4. Przekazanie komunikatu :: prod.send(tmsg); 5. Zamknięcia połączenia :: conn.close(); Program `p2p_send.java `_: .. include:: jms/p2p_send.java :literal: Pobieranie komunikatu z kolejki ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Utworzenie konsumenta :: javax.jms.MessageConsumer cons = sess.createConsumer(que); 2. Deklaracja referecji na potrzeby pobrania komunikatu z kolejki :: javax.jms.TextMessage tmsg; 3. Otwarcie połączenia :: conn.start(); 4. Pobranie komunikatu :: tmsg = (javax.jms.TextMessage)cons.receive(); 5. Zamknięcia połączenia :: conn.close(); Program `p2p_recv.java `_: .. include:: jms/p2p_recv.java :literal: Publikowanie i subskrybowanie (komunikacja publish-subscribe) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Różnica w stosunku do kolejkowania komunikatówjest tylko w typie środka komunikacji, określanego przy tworzeniu poducenta i konsumenta w ramach sesji. 1. Utworzenie tematu (zamiast kolejki) :: javax.jms.Topic top = new com.sun.messaging.Topic("temat1"); 2. Utworzenie producenta (publicysty):: javax.jms.MessageProducer prod = sess.createProducer(top); Program `publisher.java `_: .. include:: jms/publisher.java :literal: 3. Utworzenie konsumenta (subskrybenta):: javax.jms.MessageConsumer cons = sess.createConsumer(top); Program `subscriber.java `_: .. include:: jms/subscriber.java :literal: Proszę zwrócić uwagę na sposób przekazywania wiadomości, gdy najpierw dostawca coś opublikuje, a następnie odbiorca zasubskrybuje dany temat. Interakcja transakcyjna +++++++++++++++++++++++