Иметь бин "огонь", управляемый сообщением, в результате двух событий? - PullRequest
1 голос
/ 19 июля 2011

Я хотел бы иметь MDB, который срабатывает только после достижения двух независимых состояний. Например:

Событие А происходит проходит некоторое время Событие B происходит MDB onMessage вызывается в результате возникновения событий A и B События A и B очищены

Так, например, если событие B происходит, но событие A не произошло, то я не хочу, чтобы onMessage срабатывал. Точно так же, если событие A происходит, но событие B не произошло, я не хочу, чтобы onMessage запускалось. Я также хочу, чтобы события A и B коррелировались так, чтобы при запуске onMessage события A и B очищались.

Один из способов сделать это состоит в том, чтобы Событие A генерировало сообщение, и обработчик сообщения для этого проверял бы, произошло ли Событие B, но ему пришлось бы блокировать и выполнять цикл до тех пор, пока не сработало Событие B. Схема опроса кажется неэффективной.

Функционально это будет действовать как CyclicBarrier, но реализовано с обменом сообщениями.

Есть мысли, возможно ли что-то подобное с MDB?

1 Ответ

1 голос
/ 19 июля 2011

Для этого нет встроенного механизма. Я бы рекомендовал хранить инкрементное состояние в таблице БД (вставить при получении первого события, обновить / удалить при получении второго события).

Я бы определенно не рекомендовал опросить; Есть слишком много вещей, которые могут пойти не так (зависшие потоки сервера, потеря процессора, таймауты транзакций и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...