ActiveMQ and Lotus Notes


Использование сервиса очередей в приложениях Lotus Notes и Lotus Domino значительно упрощают жизнь разработчикам.

Это позволяет изолировать приложения друг от друга, а так же интегрировать с другими платформами. Надежность и отказоустойчивость тоже играют большое значение, вы перекладываете на очереди заботу о доставке и сохранности вашего послания/транзакции или факта наступления события.

Ниже я приведу пример демонстрационного приложения которое имитирует работу универсального нумератора. Предположим, у Вас есть три приложения которым требуется уникальная нумерация своих событий (регистрация писем, событий в логе и т.д.). Приложение, делает запрос в очередь со своим идентификатором, это сообщение считывается программой нумератором, она обрабатывает запрос и выдает номер, размещая ответ в другой очереди, приложение уже ждет ответа и слушает эту очередь, как только в нее появится ответ, приложение считывает его и использует для своих нужд.

Кажется, что это все сложно, но вы изолируете друг от друга две системы, приложению не требуется права на запись в файл не надо заботиться о миграции подсистем, вы всегда можете переместить нумератор на другой сервер изменив запись в DNS.

Рецепт быстрого приготовления:

Скачайте ActiveMQ и установите на свой компьютер или сервер.

В настройках Lotus Notes необходимо разрешить выполнять java приложения в файле C:\Program Files\IBM\Lotus\Notes\jvm\lib\security\java.policy в самый конец файла добавьте:

grant { permission java.security.AllPermission; };

Скопируйте библиотеку C:\activemq\activemq-all-5.15.3.jar в C:\Program Files\IBM\Lotus\Notes\jvm\lib\ext

Перезапустите Lotus Notes, для того, чтобы заработала новая политика и загрузилась библиотека

Скачайте пример на Lotus Notes numerator

  1. Откройте приложение
  2. Перейдите в представление «Apps»
  3. Выделите настройку приложения «App2»
  4. Запустите агента «Actions->App->set app.in» для загрузки запроса номера из центрального «нумератора»
  5. Запустите агента «Actions->GetAgent» — он считывает запрос из очереди «app.in» находит по идентификатору приложения настройку в которой храниться последний выданный номер, получает следующий номер и размещает его в очереди «app.out»
  6. Выделите настройку «App2» и запустите агента «Actions->App->get app.out» который  считывает из очереди запись и записывает полученный номер в настройку.

http://activemq.apache.org/