Система уведомлений с p: poll / push

Я пытался реализовать базовую систему уведомлений для базовой социальной сети сp:poll на вид слоя и простойNotificationService класс, который получает новые уведомления из БД и обновляет список уведомленийNotificationBean который просматривается для каждого пользователя. Ход процесса похож на этот:

-Poll calls NotificationBean.getNewNotifications for example every 15 sec.
--getNewNotifications calls NotificationService and DAO methods
---notificationList of user is refreshed
----DataTable on view layer shows new notifications

Но беспокойствоp:poll о его производительности, потому что он отправляет запрос по истечении каждого интервала.

PrimeFaces имеетPrimePush основанный на Atmosphere Framework, он открывает веб-сокеты и кажется более подходящим для создания системы уведомлений.

Но я не знаю, какие компоненты и какие свойства их следует использовать. В нем естьp:socket компонент сchannel свойство. Должен ли я использовать имена пользователей в качествеchannel ценности? Ниже приведен код, представленный демонстрацией PrimeFaces, и суммированы последние предложения:

<p:socket onMessage="handleMessage" channel="/notifications" /> 

Насколько я понял изэтот пример витрина этоp:socket слушаетnotifications канал. И фрагмент кода толкателя:

PushContext pushContext = PushContextFactory.getDefault().getPushContext();       
pushContext.push("/notifications", new FacesMessage(summary, detail));

Но это будет уведомлять все пользовательские страницы, мне нужен толкатель, который уведомляет конкретного пользователя. Допустим, есть 2 пользователя и предположим, что пользователь1 добавляет пользователя 2 в друзья. Там должно быть что-то. как это:

pushContext.push("User2/notifications", new FacesMessage("friendship request", "from User1"));

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

Спасибо за помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос