Mule 3 :Управление тем, разрешено ли выполнение потока

Моя текущая ситуация:

В настоящее время у меня есть приложение Mule ESB с тремя потоками, которые обрабатывают сообщения, исходящие из двух разных источников, эти три потока связаны друг с другом с помощью очереди виртуальных машин.

Расход #1:

Входящий (Конечная точка #1)-> (Выполнение обработки и преобразования сообщений)-> Исходящий (Конечная точка #3)

Расход #2:

Входящий (Конечная точка #2)-> (Выполнить обработку и преобразование сообщений)-> Исходящий (Конечная точка #3)

Расход #3

Входящий (Конечная точка #3)-> (Выполнять обработку и преобразование сообщений, делать другие вещи)-> Исходящий

Проблема/проблема:

Теперь я хочу ввести четвертый поток, поток #4, который получает информацию о состоянии от входящей конечной точки и на основе этой информации может предотвратить выполнение потока #3/предотвратить его обработку. входящие сообщения.

Другими словами, в идеале я бы хотел, чтобы Flow #4 запускался при запуске приложения ESB (, как это делают все потоки автоматически ), и на основе информации о состоянии, которую он получает от своего приложения. входящее сообщение, запретить/разрешить или включить/отключить поток #3 от обработки сообщений от конечной точки #3.

Вот что мне в идеале нужно:

Требования:

  1. Должна быть возможность выполнять только через поток XML, без дополнительных POJO/пользовательских объектов Java.
  2. Поток #4 должен выполняться при запуске приложения ESB, и необходимо обрабатывать только первое входящее сообщение.
  3. Идеально,Я не хочу, чтобы Flow #3 имел составной входящий источник или должен был оценивать каждое входящее сообщение как состояние некоторой глобальной переменной.

Как лучше всего выполнить то, что я хочу сделать?

Если действительно хорошего решения нет, то если я должен опустить требование #3, то как лучше всего реализовать такую ​​глобальную переменную, которая используется совместно двумя независимыми потоками, не связанными вместе каким-либо исходящим -> входящая конечная точка в конфигурации XML? Я пытался использовать свойства сеанса, но они требуют, чтобы потоки были связаны друг с другом либо как подпотоки, либо как конечная точка.

Спасибо.

5
задан MikeCompSciGeek 9 August 2012 в 14:47
поделиться