Как я могу продолжить процесс Drools Flow, когда я получаю сообщение JMS?

У меня очень простой поток, сообщение JMS запускает процесс, который получает список объектов. foreach выполняет итерацию по этому списку и отправляет JMS-сообщение компоненту для обработки объекта в списке. Этот компонент должен отправить уведомление о завершении обратно в процесс потока, чтобы он мог продолжить работу. Кто-нибудь знает, как этого можно достичь?

Спасибо.


person Greg    schedule 19.07.2010    source источник


Ответы (1)


Как вы реализуете отправку этого сообщения? Используете пользовательский узел рабочего элемента? Я вижу два варианта:

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

  • если вы также хотите обрабатывать более неожиданные сообщения JMS (не обязательно результат первого сообщения JMS запроса), вы можете использовать для этого узел событий и иметь прослушиватель JMS, который переводит входящие сообщения JMS (определенного типа) в signalEvent (..) вызовы, которые затем продолжат поток от узла событий вперед.

Крис

person Kris Verlaenen    schedule 19.07.2010