пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Особенности использования модели PUB-SUB (алгоритм и шаги реализации).

Publish-subscribe (Pub-sub) модель применима, когда одному или нескольким компонентам (publishers) необходимо послать сообщение одному или нескольким компонентам-адресатам (subscribers). Данная модель основана на понятии message topic.

Cледует помнить, что многие pub-sub системы не гарантируют доставку сообщений в том порядке, в каком они были посланы (в отличие от point-to-point, где queue реализует принцип first-in/first-out).

Задача сохранения порядка следования сообщений не тривиальна даже в случае одного topic.

При необходимости сохранение порядка доставки сообщений в случае множественных topics –сложность возрастает экспоненциально. Поэтому в случае pub-sub модели следует по возможности избегать ситуаций, когда порядок следования сообщений важен (либо использовать заголовки и раздел свойств сообщений для синхронизации).

Алгоритм реализации:

1. Сначала найдем сервис JNDI, инициализируем

2. Найдем ConnectionFactory 3. Создадим TopicConnection соединение 4. Создадим TopicSession 5. Найдем topic в дереве JNDI (или создадим новый, если он не существует) 6. Создадим простейшее текстовое сообщение textMessage 7. Создадим MessageProducer, (в данном случае TopicPublisher) 8. Посылаем сообщение В Pub-Sub subscriber существует два способа получения сообщения: синхронный, с использованием метода receive() интерфейса TopicSubscriber, либо асинхронный, с использованием интерфейса MessageListener.

В синхронном варианте, получив (либо создав) Topic, создадим consumer (объект принимающий сообщения): TopicSubscriber subscriber = session.createSubscriber(topic);

После активизации connection, вы можете получать сообщения: TextMessage textMessage = (TextMessage)subscriber.receive();

В случае асинхронного получения сообщений реализуйте метод onMessage интерфейса MessageListener, и зарегистрируйте новый Listener с помощью метода setMessageListener интерфейса TopicSubscriber.


28.05.2018; 16:56
хиты: 182
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь