2010-03-09 5 views
2

У меня проблема с дизайном.Уведомление между компонентами Java EE

Мое приложение имеет несколько компонентов Java EE. Простыми словами, один из них выступает в качестве поставщика услуг (Non UI), а другие - потребители (UI webapp).

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

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

Проблема

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

Какие механизмы уведомления можно использовать для достижения этого?

+0

См. Также http://stackoverflow.com/questions/2406984/what-are-the-alternatives-of-jms – ewernli

+0

BTW, я не знаю Не понимаю свой вопрос. Кэш находится у потребителя? У вас есть механизм обновления кеша, поэтому потребитель знает, когда изменилась конфигурация, нет? В противном случае используйте временную метку. Вы периодически проверяете временную метку, и если временная метка в кеше и временная метка в db различаются, вы перезагружаете конфигурацию. – ewernli

ответ

3

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

+0

Очереди на самом деле не будут работать, поскольку они являются точками (PTP). Предполагая, что существует более одного потребителя, который вы хотели бы использовать в теме (pub/sub) – mtpettyp

1

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

1

Посмотрите на шаблон дизайна Observer. Вы можете хранить пользователей в списке и уведомлять их, когда происходит что-то интересное.

0

Возможно, вам понадобится модель OBSERVER.
Он уведомляет потребителей (ваши приложения пользовательского интерфейса) с помощью обратного вызова. Вы можете использовать JMS для уведомлений.