2017-01-04 9 views
0

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

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

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

ответ

1

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

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

+0

Я думал об этом решении, но я хотел избежать моста. –

+0

Если это только одна тема и одна очередь, создание единого моста не должно быть слишком большой проблемой. Если несколько тем и очередей, возможно, вы можете их создать. Я знаю, что мосты получают плохую репутацию (по какой-то причине), но они, как правило, не вызывают никаких проблем. –

+0

Я выбираю другой способ делать что-то, но ваш ответ кажется лучшим, поэтому я принял его. –

2

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

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

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

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

0

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

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