Notyfikacja w springu - czy potrzebuje dodatkowych bibliotek?

0

Witam,
Mam prostą aplikację w springu mvc + jpa + spring security. Mam tabelę user, task i users_in_tasks. Użytkownik dodaje jakieś zadanie i przydziela je odpowiednim osobom. W momencie przydzielenia pojawia się wpis w tabeli users_in_tasks na przykład 1 2. Teraz chodzi, o to że jak dany użytkownik się zaloguje, żeby mu się wyświetliło jakieś powiadomienie, że ma nowe zadanie do wykonania, coś jak ziemia z facebooka.

Czy da sie to zrobić, wykorzystując samego springa, czy muszę dodać np. to: http://www.ideyatech.com/push-notifications-using-atmosphere-spring/? Używał może ktoś z was tego atmosphere i ma jakiś przykład?

0

Masz kilka rozwiązań. Możesz napisać to ręcznie, zwyczajnie używając jakiegoś Observera, możesz skorzystać z gotowego elementu. Spring ma tu w sumie mało do gadanie, ważniejszy jest twój frontend.

0

Może podać jakieś inne gotowe rozwiązania?

0

Skorzystaj ze wzorca Obserwator, w javie są nawet interfejsy to ułatwiające, ale możesz napisać własne :D
Sam wzorzec jest intuicyjny.

0

JSF? I komponent "growl"?

0

Hej, wg mnie wszystko zależy od bazy Twoich użytkowników. Jeśli będzie ich wielu, to zdecydowanie warto iść w asynchroiczne wypychanie wiadomości do użytkownika, choćby przez tą bibliotekę, którą wymieniłeś. Jeśli natomiast liczba użytkowników będzie znikoma, zadania nie będą często dodawane (w celu zmniejszenia interwału pollingu) i bazce nie będą straszne selecty na tej tabeli, to możesz pokusić się o brzydsze, ale być może prostsze rozwiązanie. Napisz po prostu serwis i kontroler, który będzie wyciągał z bazy zadania do zrobienia dla konkretnego użytkownika i ewentualnie markował je jako "obejrzane". Po stronie frontu wystarczy, jak napiszesz metodę, która będzie cyklicznie wywoływać ów kontroler i notyfikować użytkownika, jeśli serwis zwróci zadania do zrobienia. Implementacja pollingu zależy już od frameworka Twojego frontu, czy to $interval z Angulara czy JQuery, czy jeszcze coś innego - wybór należy do Ciebie. Tak jak wspomniałem, ma to swoje minusy: nie tylko w niepotrzebnym wysyłaniu zapytań do bazy dla każdego użytkownika, ale także i w opóźnieniu notyfikacji, w zależności od ustawionego interwału. Natomiast dla prostych potrzeb być może wystarczy.

0

Co do rozwiązania bazującego na websocketach. Jest fajny przykład na oficjalnej stronie springa. Jak liczysz się z duża liczbą zapytań (to o czym wspomniał kolega wyżej) to chyba websockety bedą dobrym rozwiązaniem.

https://spring.io/guides/gs/messaging-stomp-websocket/

1 użytkowników online, w tym zalogowanych: 0, gości: 1