Внутренняя шина событий с подключаемыми потребителями - PullRequest
2 голосов
/ 23 января 2012

У меня есть приложение J2EE, которое получает и обрабатывает сообщения (события).Эти сообщения содержат различные блоки данных.Различные типы обработки могут быть запущены в зависимости от типа данных, содержащихся в сообщении.

Я хотел бы иметь простую внутреннюю шину событий / сообщений, которая может использоваться основным потоком обработки для вызова различных пост-Процессоры зависят от содержимого сообщения.Например, если получено сообщение типа A, я хотел бы иметь возможность отправлять внутреннее событие всем постпроцессорам, которые подписались на события типа A. Затем постпроцессоры могут творить свое волшебство в свое время./нить.Было бы неплохо (хотя и не обязательно), если бы постпроцессоры могли быть добавлены / удалены из приложения через своего рода плагин-каркас.

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

Спасибо в ожидании

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Guava имеет и хорошую реализацию EventBus. См. документацию .

2 голосов
/ 23 октября 2012

Вы также можете проверить MB Ambassador https://github.com/bennidi/mbassador.

Он основан на аннотациях, очень легок и использует слабые ссылки (таким образом, его легко интегрировать в среды, где управление жизненным циклом объектов осуществляется с помощью таких сред, как spring, guice или somethign). Он обеспечивает механизм фильтрации объектов и синхронную или асинхронную диспетчеризацию / обработку сообщений. И это очень быстро!

РЕДАКТИРОВАТЬ: я создал сравнение производительности и возможностей для выбора доступных реализаций шины событий, включая Guava, MB Ambassador и некоторые другие. Результаты довольно интересные. Проверьте это здесь http://codeblock.engio.net/?p=37

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