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

Java Message Service (JMS) – це Java API, який дозволяє додаткам створювати, відправляти, отримувати і читати повідомлення. Розроблений Sun і декількома компаніями-партнерами, JMS API визначає загальний набір інтерфейсів, які дозволяють програмам, що написані на мові програмування Java взаємодіяти з іншими реалізаціями обміну повідомленнями.

Основними будівельними блоками JMS додатка є (рисунок 4):

  • administered objects: connection factories and destinations;

  • connections;

  • sessions;

  • message producers;

  • message consumers;

  • messages.

Рисунок 4 – Основні будівельні блоки JMS додатка

Administered Objects складаються з двох частин: destinations та connection factories.

ConnectionFactory - це, як неважко здогадатися з назви, об'єкт, відповідальний за створення JMS з'єднання. Адміністратор МОМ створює даний об'єкт і пов'язує його з деревом JNDI (набір API, який дозволяє Java - клієнтам відкривати і переглядати дані і об'єкти за їхніми іменами), так що клієнт JMS може отримати доступ до ConnectionFactory використовуючи стандартний JNDI механізм пошуку. У разі point-to-point моделі використовується javax.jms.QueueConnectionFactory, в разі pub/sub моделі - javax.jms.TopicConnectionFactory.

Connection - абстрактне уявлення реального з'єднання між клієнтом JMS та MOM. У разі point-to-point моделі використовується javax.jms.QueueConnection, в разі pub/sub моделі - javax.jms.TopicConnection.

Session - об'єкт, який створюється JMS Connection і використовується клієнтами для посилки і прийняття повідомлень. У разі point-to-point використовується javax.jms.QueueSession, в разі pub/sub - javax.jms.TopicSession. Фактично, це головна "робоча конячка" JMS.

Destination - це або queue, або topic - в залежності від моделі: javax.jms.Queue або javax.jms.Topic. Як і ConnectionFactory, призначення зв'язується з деревом JNDI.

MessageProducer - об'єкт, який, власне, і посилає повідомлення. У разі point-to-point моделі це javax.jms.QueueSender, в разі pub/sub - javax.jms.TopicPublisher.

MessageConsumer - об'єкт, який приймає повідомлення. У разі point-to-point моделі це javax.jms.QueueReceiver, в разі pub/sub - javax.jms.TopicSubscriber.

Message - повідомлення.

    1. Messages

      1. Типи повідомлень

Повідомлення можуть бути наступних типів:

  • StreamMessage - повідомлення, що містять потік об'єктів.

  • MapMessage - повідомлення, що містять пари "ключ-значення".

  • TextMessage - повідомлення, що містять строку.

  • ObjectMessage - повідомлення, що містять об'єкт.

  • ByteMessage - повідомлення, що містять потік байтів.

  • XMLMessage - розширення TextMessage, використовується для доставки XML повідомлень.

Всі типи повідомлень є підкласами javax.jms.Message.

      1. Заголовки і розділи властивостей повідомлень

Повідомлення складаються з трьох частин: заголовка повідомлення, розділу властивостей і власне тексту повідомлення.

Тема повідомлення містить додаткову інформацію, яку розробник може використовувати в своєму додатку. JMS надає get і set методи для кожного поля заголовка. Деякі з них встановлюються автоматично, інші можуть бути використані розробником програми.

JMSDestination - містить ім'я destination, в який надсилається повідомлення.

JMSDeliveryMode - визначає, чи є повідомлення таким, що зберігається чи ні. Якщо воно було таким, що зберігається, то буде збережено MOM в базі даних (або в файлі), а тому воно переживе "загибель" системи, на відміну від повідомлення, яке не зберігається.

JMSExpiration - визначає, коли повідомлення застаріє і буде видалено з системи. За замовчуванням повідомлення не старіє ніколи.

JMSPriority - як і випливає з назви, визначає пріоритет повідомлення (від 0 до 9). За замовчуванням дорівнює 4.

JMSMessageID - унікальний ідентифікатор повідомлення

JMSTimestamp - містить інформацію, коли саме MOM прийняла повідомлення від producer.

JMSCorrelationID - може бути використано розробником для узгодження повідомлень: наприклад, якщо ви хочете переслати ряд повідомлень, об'єднаних в одну логічну групу (таку як набір товарів в замовленні, при цьому в кожне повідомлення про товар ви можете додати в цьому полі заголовка номер замовлення).

JMSReplyTo - може бути використано розробником для того, щоб consumer знав, кому (тобто в який destination) при бажанні відсилати відповідь.

JMSType - поле може бути використане розробником для того, щоб дати додатку інформацію, як поводитися з даним повідомленням. Тип тут розуміється як application-specific type, а не той, що використаний вище в розділі "типи повідомлень".

JMSRedelivered - встановлюється, якщо повідомлення не було доставлено з першої спроби - наприклад, в разі, коли consumer не підтвердив отримання повідомлення (якщо він повинен був підтвердити, звичайно).

Розділ властивостей повідомлень містить пари "ключ-значення", які можуть бути використані для пересилання певних даних між producer і consumer. Як значення можуть бути використані примітивні типи (boolean, byte, float, double, short, int, long), а так само рядки (java.lang.String).

Встановлюються і читаються вони за допомогою відповідних set і get методів. Наприклад, для установки integer-властивості з ключем "MyProperty" і значенням рівним 100:

textMessage.setIntProperty ("MyProperty", 100);

Для читання:

int value = textMessage.getIntProperty ("MyProperty");

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