Нужна структура для системы уведомлений/приборной панели?

Мне было предложено внедрить систему уведомлений в приложении Cloud Java. Предпосылка заключается в том, что администраторы или компоненты приложения могут отправлять отдельные сообщения отдельным пользователям или передавать объявления всем пользователям.

Уведомления будут классифицироваться по степени серьезности, типу (отключениям, новым сервисам и т.д.) и соответствующему компоненту.

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

Хотя я уверен, что это было бы интересно реализовать с нуля, просто кажется, что должна существовать существующая система, проект Apache, коммерческий проект и т.д., который делает именно это и избегает меня, чтобы изобретать велосипед.

Мой вопрос:. Кто-нибудь может рекомендовать инфраструктуру отслеживания уведомлений, которая может быть интегрирована в существующее приложение и автоматически обрабатывать все исходные данные? Коммерческие или с открытым исходным кодом являются прекрасными, если условия лицензирования являются коммерчески доступными (без GPL или LGPL, пожалуйста).

Ответ 1

Я предполагаю, что то, что вы ищете, похоже на Amazon Simple Notification Service (SNS). Но сначала позвольте задать некоторые вещи прямо:

  • Вы пытаетесь отправить электронную почту /SMS - и обе требуют Infrastructure, а не только фреймворки/библиотеки. Я предполагаю, что ваш клиент (или любой другой клиент) будет иметь сервер электронной почты, который работает где-то, поэтому вы не будете иметь прямого влияния на стоимость. Но отправка SMS-сообщений несет накладные расходы на инфраструктуру.
  • У вас не будет готового решения. Поскольку у вас будет дополнительная инфраструктура, вы, по крайней мере, напишите хороший уровень интеграции с этой инфраструктурой.

Помня об этом, вот варианты, перечисленные в порядке сложности:

Изменить: Незначительные пояснения

Ответ 2

Похоже, ваше требование - это какие-то живые данные в веб-приложении на основе браузера. Если это правильно, в некоторых из HTML 5 apis были особенно заметны успехи, особенно веб-сокеты.

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

Как правило, чтобы обойти отсутствие широко распространенной поддержки, было довольно много фреймворков на стороне javascript/server, которые появились, что кажется действительно многообещающим. Эти структуры типично заботятся о резервной поддержке, когда веб-порты не поддерживаются. Некоторые технологии возврата включают в себя события, отправленные сервером, jsonp, длительный опрос, короткий опрос и т.д.

2 замечательных проекта с открытым исходным кодом приходят на ум:

1). Atmoshphere: https://github.com/Atmosphere/atmosphere

2). Socket-io - http://socket.io/