JMS

Instalacja

  1. Pobierz ze strony mq.java.net plik:
    Open MQ 4.5 (zip archive, no installer)
  2. Uruchom program brokera:
    mq/bin/imqbrokerd -vmargs -d64

Zadania

  1. Zaimplementuj aplikację dodającą wiadomości do kolejki (Queue). W tym celu należy:
    • utworzyć obiekt klasy:
      new com.sun.messaging.ConnectionFactory();
    • stworzyć obiekt reprezentujący połączenie z brokerem:
      Connection conn = myConnFactory.createConnection();
    • nadać identyfikator klienta:
      conn.setClientID("nazwa");
    • utworzyć obiekt sesji:
      Session mySess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    • utworzyć obiekt reprezentujący kolejkę o określonej nazwie:
      Queue myQueue = new com.sun.messaging.Queue("nazwaKolejki");
    • przy pomocy obiektu reprezentującego sesję, utworzyć producenta wiadomości:
      MessageProducer myMsgProducer = mySess.createProducer(myQueue);
    • przy pomocy obiektu reprezentującego sesję, utworzyć nową wiadomość:
      TextMessage myTextMsg = mySess.createTextMessage();
      myTextMsg.setText(args[0]);
      
    • wysłać wiadomość:
      myMsgProducer.send(myTextMsg);
    • zamknąć sesję i połączenie:
      mySess.close();
      conn.close();
  2. Napisz aplikację pobierając wiadomości z kolejki. Aby pobrać wiadomość należy:
    • utworzyć obiekty reprezentujące połączenie, sesję i kolejkę, tak jak w przypadku nadawcy wiadomości
    • rozpocząć połączenie i odebrać wiadomość:
      myConn.start();
      MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);
      Message msg = myMsgConsumer.receive();
    • zamknąć połączenie i sesję
  3. Skompiluj i uruchom aplikacje:
    javac -cp "jms.jar:imq.jar:." *.java
    java -cp "jms.jar:imq.jar:." NazwaProgramu
    
  4. W aplikacjach zmień Queue na Topic i porównaj sposób działania.
  5. Zaimplementuj program konsumenta, który odbiera wiadomości z kolejki asynchronicznie.
  6. Zaimplementuj konsumenta korzystającego z mechanizmu trwałej subskrypcji.
  7. Przetestuj mechanizm filtrowania wiadomości (Session.createConsumer, Message.setStringProperty).

Pliki

MessageQueue.tar

async.tar