Использование сервиса очередей в приложениях Lotus Notes и Lotus Domino значительно упрощают жизнь разработчикам.
Это позволяет изолировать приложения друг от друга, а так же интегрировать с другими платформами. Надежность и отказоустойчивость тоже играют большое значение, вы перекладываете на очереди заботу о доставке и сохранности вашего послания/транзакции или факта наступления события.
Ниже я приведу пример демонстрационного приложения которое имитирует работу универсального нумератора. Предположим, у Вас есть три приложения которым требуется уникальная нумерация своих событий (регистрация писем, событий в логе и т.д.). Приложение, делает запрос в очередь со своим идентификатором, это сообщение считывается программой нумератором, она обрабатывает запрос и выдает номер, размещая ответ в другой очереди, приложение уже ждет ответа и слушает эту очередь, как только в нее появится ответ, приложение считывает его и использует для своих нужд.
Кажется, что это все сложно, но вы изолируете друг от друга две системы, приложению не требуется права на запись в файл не надо заботиться о миграции подсистем, вы всегда можете переместить нумератор на другой сервер изменив запись в DNS.
Рецепт быстрого приготовления:
Скачайте ActiveMQ и установите на свой компьютер или сервер.
- Скачайте архив
- Распакуйте на диск C:\ActiveMQ
- Запустите C:\activemq\bin\win64\activemq.bat
В настройках 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
- Откройте приложение
- Перейдите в представление «Apps»
- Выделите настройку приложения «App2»
- Запустите агента «Actions->App->set app.in» для загрузки запроса номера из центрального «нумератора»
- Запустите агента «Actions->GetAgent» — он считывает запрос из очереди «app.in» находит по идентификатору приложения настройку в которой храниться последний выданный номер, получает следующий номер и размещает его в очереди «app.out»
- Выделите настройку «App2» и запустите агента «Actions->App->get app.out» который считывает из очереди запись и записывает полученный номер в настройку.
Для отправки комментария необходимо войти на сайт.