web-dev-qa-db-fra.com

Notification push de rappel à l'aide de Spring Boot et Angular

J'ai besoin de construire une application web en utilisant Spring Boot pour l'API RESTful et Angular (4 ou 5) qui rappellera l'utilisateur au bon moment. Par exemple si j'ai une réunion à 11h , mon composant serveur doit savoir qu'il y a cette réunion à 11 h en temps réel, puis pousser la notification via WebSockets. Je n'ai trouvé aucune ressource utile sur le Web qui puisse m'aider à comprendre et à concevoir ce composant spécifique qui doit être écouté. un événement de base de données chaque seconde.

Quelqu'un peut-il m'aider ici à concevoir ce composant unique avec le bon choix d'outils? Devrait-il s'agir d'une file d'attente comme Apache Kafka ou Apache Storm, ou autre chose entièrement?

4
Samir Joglekar

Il s'agit d'une application Web, donc les événements ne seront livrés que si l'utilisateur est connecté, non? Dans ce cas, il est probable que la plupart des événements ne seront pas livrés car il n'y a pas d'utilisateur.

Je livrerais des événements en utilisant Websocket voir le guide Spring comment faire https://spring.io/guides/gs/messaging-stomp-websocket/

Une solution simple planifierait tous les événements à l'aide d'outils tels que http://www.quartz-scheduler.org/ . Ensuite, si l'événement se déclenche et que l'utilisateur est connecté, une notification d'événement sera envoyée à l'aide de websocket. Mais cela peut être un gaspillage si vous avez un grand nombre d'utilisateurs.

Une solution plus légère serait

  • lorsque l'utilisateur se connecte, vérifiez s'il a planifié des événements. Enregistrez ensuite les notifications pour eux côté client, en utilisant la planification javascript côté client.
  • en cas de modification côté serveur pour l'événement pour l'utilisateur, vous devez fournir des mises à jour sur ces événements aux utilisateurs connectés.

Pour moi, les files d'attente de messages ne s'appliquent pas là-bas. Lorsque vous mettez en file d'attente un message pour un événement futur, il n'y a aucun moyen raisonnable de consommer ce message lorsque l'événement est sur le point de se produire.

4
Bartosz Bilicki