Notyfikacja w springu - czy potrzebuje dodatkowych bibliotek?

Notyfikacja w springu - czy potrzebuje dodatkowych bibliotek?
GC
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 6 lat
  • Postów:249
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?

Lukasz_
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:140
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.

GC
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 6 lat
  • Postów:249
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.

KA
te interfejsy od javy są średnie. jak już to event bus od guavy. aczkolwiek czy obserwator jest tu konieczny to nwm
0

JSF? I komponent "growl"?

DK
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:13
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.

PO
  • Rejestracja:prawie 10 lat
  • Ostatnio:6 dni
  • Postów:153
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/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.