Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
718.62 Кб
Скачать
      1. Підтвердження отримання повідомлення

JMS підтримує три "основних" моделі підтвердження отримання повідомлення.

AUTO_ACKNOWLEDGE - в разі синхронного отримання повідомлень, підтвердження отримання буде вироблено автоматично, коли метод receive() поверне значення не викликавши жодної виняткової ситуації. У разі асинхронного отримання повідомлень, підтвердження отримання буде вироблено, коли метод onMessage() поверне значення.

DUPS_OK_ACKNOWLEDGE - робота з підтвердження отримання повідомлення перекладається на Session. Повідомлення будуть знову доставлені в разі виникнення помилки або "загибелі" системи.

CLIENT_ACKNOWLEDGE - клієнт повинен викликати метод acknowledge() інтерфейсу javax.jms.Message для того, щоб явно підтвердити отримання повідомлення. При виклику даного методу буде підтверджено отримання поточного і всіх попередніх отриманих повідомлень.

2 ХІД ВИКОНАННЯ РОБОТИ

Приклад наданий для роботи в IDE Eclipse.

Необхідно додати сервер до Eclipse. Для цього на вкладці Servers необхідно натиснути ПКМ та вибрати пункт New (рисунок 5).

Рисунок 5 – Пункт новий сервер

Виберіть "JBoss AS 6.x" і натисніть на кнопку "Далі"(рисунок 6). Виберіть JBoss 6.x Шлях з локальної файлової системи. Виберіть Конфігурація "за замовчуванням" і натисніть на кнопку "Готово" (рисунок 7).

Рисунок 6 – Вибір серверу

Рисунок 7 – Завершення конфігурування сервера

Тепер ми можемо спостерігати, що JBoss AS 6.x запущений і працює (рисунок 8).

Рисунок 8 – Працючий сервер

Щоб налаштувати HornetQ пункти призначення (Черги або теми) з JBoss AS 6, необхідно створити EJB Project в Eclipse IDE (рисунок 9).

Рисунок 9 – EJB Project

Вкажіть назву проекту "HornetQ Config App" і виберіть цільову середу виконання "JBoss 6.x Runtime".

Рисунок 10 – Зазначення назви та середи виконання проекту

Далі необхідно створити файл "hornetq-jms.xml" в директорії "ejbModule \ META INF", щоб додати нову чергу (рисунок 11).

Рисунок 11 – Нова структура проекту

hornetq-jms.xml - використовується для настройки JMS черг і тем для HornetQ JMS Provider (рисунок 12).

Рисунок 12 - hornetq-jms.xml

Далі натисніть правою кнопку миші на сервері і виберіть "Додавання і видалення" (рисунок 13).

Рисунок 13 – Розміщення черги на сервері

Тепер необхідно створити новий проект Java для розробки JMS Publisher і Consumer.

Створення JBoss JMS програми Publisher:

import javax.jms.*;

import javax.naming.*;

public class JBossJMSPublisher {

    public static void main(String[] args) throws Exception{

        Context context = new InitialContext();

        ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup("/ConnectionFactory");     

        Destination queue = (Destination)context.lookup("queue/JDQueue");

        Connection connection = connectionFactory.createConnection();

        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        MessageProducer producer = session.createProducer(queue);

        TextMessage sntMessage =session.createTextMessage("JD Sample JMS Queue Message");

        producer.send(sntMessage);

        System.out.println("Message Sent successfully.");

        connection.close();

    }

}

Створення програми JMS Consumer:

import javax.jms.*;

import javax.naming.*;

public class JBossJMSConsumer {

    public static void main(String[] args) throws Exception{

        Context context = new InitialContext();

        ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup("/ConnectionFactory");     

        Destination queue = (Destination)context.lookup("queue/JDQueue");

        Connection connection = connectionFactory.createConnection();

        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        MessageConsumer consumer = session.createConsumer(queue);

        connection.start();

        TextMessage rcvMessage = (TextMessage) consumer.receive();

        System.out.println("Received Msg = " + rcvMessage.getText());

        connection.close();

    }

}

Далі визначити JBoss як JNDI в jndi.properties в папці "SRC" jndi.properties.

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

java.naming.provider.url=jnp://localhost:1099

Тепер додати необхідні jars у Project Build path. Використайте "Add Library", щоб додати бібліотеку 6.x JBoss (рисунок 14).

Рисунок 14 – Додавання необхідних jars

Остаточний проект виглядає як показано на рисунку 15.

Рисунок 15 – Остаточна структура проекту

Тепер перевірте додаток JMS. Запустіть JMS Producer для відправки повідомлень на JBoss AS 6.x HornetQ (рисунок 16).

Рисунок 16 – Відправка повідомлення

Запустіть JMS Consumer та спостерігайте повідомлення (рисунок 17).

Рисунок 17 – Отримане повідомлення

3. КОНТРОЛЬНІ ЗАПИТАННЯ

  1. Що таке МОМ?

  2. Які існують моделі обміну повідомленнями?

  3. Які існують відмінності PTP від pub/sub?

  4. Що таке JMS?

  5. З яких компонентів складається JMS?

  6. Які існують типи повідомлень?

  7. Назвіть відомі Вам моделі підтвердження отримання повідомлення.

4. СПИСОК ДОДАТКОВИХ ДЖЕРЕЛ ІНФОРМАЦІЇ

  1. http://docs.oracle.com/javaee/6/tutorial/doc/bncdr.html

  2. http://docs.oracle.com/javaee/6/tutorial/doc/bncdx.html#bncec

  3. http://www.javable.com/columns/serv_side/workshop/14/

  4. http://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html

  5. http://www.journaldev.com/9906/jms1-1-with-eclipse-and-jboss6-example

  6. http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JMSProducer/JMSProducer.html

  7. https://habrahabr.ru/post/162813/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]