Получить все сообщения из темы

Как я могу получить все сообщения из темы JMS в Tibco?

Я знаю, что могу использовать подписчика на тему, но он не совсем подходит для моих нужд. Я хочу запускать процесс только один раз в день, который будет читать все сообщения из темы и обрабатывать их. У меня не может быть и таймер, и подписчик темы в одном процессе.

Я пробовал с «Подождите сообщения темы JMS», но кажется, что он получает только одно сообщение, независимо от того, сколько у меня есть в теме.


person Adrian Ber    schedule 04.01.2017    source источник


Ответы (3)


Я думаю, что лучшим решением будет связать тему JMS с очередью и использовать действие «JMS Queue Receiver» в начале вашего процесса.

Как только вы запускаете экземпляр один раз в день, он будет подключаться и обрабатывать все сообщения в очереди.

person Chukwuemeka Onyenezido    schedule 05.01.2017
comment
Я думал об этом решении, но хотел избежать наведения мостов. - person Adrian Ber; 05.01.2017
comment
Если это только одна тема и одна очередь, создание одного моста не должно быть слишком большой проблемой. Если несколько тем и очередей, возможно, вы можете создать их пакетно. Я знаю, что у мостов плохая репутация (по какой-то причине), но обычно они не вызывают никаких проблем. - person Chukwuemeka Onyenezido; 10.01.2017
comment
Я выбираю другой способ ведения дел, но ваш ответ кажется лучшим, поэтому я его принял. - person Adrian Ber; 24.01.2017

Я бы попробовал пойти в другом направлении. Вы можете реализовать это, используя 2 отдельных процесса.

Один процесс, подписчик темы (с постоянным), который получает все сообщения. Этот пускатель процесса должен быть отключен по умолчанию (поэтому прослушиватель не активен).

Второй процесс — это таймер, который активирует первый процесс через Hawk (Engine Command). Таким образом, каждый раз, когда подписчик активируется, он начинает обрабатывать события.

Проблемной частью здесь является деактивация подписчика темы после того, как это будет сделано. Для этого нужна отдельная логика, когда деактивировать подписчика. Это также может быть сделано с помощью отдельного таймера или некоторого правила Hawk, которое срабатывает, когда у подписчика больше нет сообщений.

person jens walter    schedule 05.01.2017

Гораздо более естественное решение (если оно может быть реализовано) состоит в том, чтобы просто реализовать подписчика темы (или подписчика очереди, если тема соединена мостом с очередью) и позволить системе BusinessWorks Engine создавать экземпляры заданий всякий раз, когда публикуется сообщение.

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

person trankas    schedule 21.02.2017