Développer des applications réactives avec Spring WebFlux
Les applications Java accèdent très souvent à des données: requêtes vers une base de données, appels d'API, envois et réceptions de de messages; ce sont autant d'opérations I/O. Elles impliquent une latence et doivent être non bloquantes, condition nécessaire à la scalabilité de l'application.
Après avoir rappelé les relations entre threads et opérations I/O ce cours vous apprendra comment utiliser Spring WebFlux pour réaliser des applications non bloquantes.
Développeurs et développeuses Java, architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- ce qu'implique une opération I/O;
- pourquoi les opérations I/O ont avantage à être non bloquante;
- assembler un pipeline et y souscrire avec les classes
Mono
etFlux
; - requéter des bases de données de manière réactive;
- accéder à des données de manière réactive;
- envoyer et recevoir des messages de manière réactive;
- exposer une API REST réactive;
- tester une application réactive.
Prérequis
Ce cours demande une connaissance solide des bases de la programmation Java (principes de la programmation orientée objet, types génériques, annotations, expressions lambda), de Spring et Spring boot et une habitude de travailler avec Eclipse ou IntelliJ.
Méthodes pédagogiques
- Explication, pour chaque concept, du problème qu'il prétend résoudre.
- Mise en pratique d'un concept immédiatement après qu'il ait été présenté.
- Validation de chaque étape par exécution de tests unitaires.
- Exercice « fil rouge » pour obtenir en fin de cours une application complète.
- QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Programme détaillé
Introduction
- Applications I/O bounded vs CPU bounded.
- Opérations I/O: l'avantage de l'exécution non bloquante.
- Le fonctionnement d'un event loop.
- L'API reactive streams.
- Comparaison des paradigmes publish / subscribe et request / response.
Les fondamentaux de la programmation réactive avec Reactor
- Project reactor comme implémentation de l'API reactive streams.
- La création d'un
Flux
et d'unMono
. - Les principaux opérateurs pour assembler un pipeline.
- Les opérateurs side effects.
- L'interopérabilité avec le code synchrone.
- Le couplage avec Reactor - JUnit pour tester les applications réactives.
Mise en pratique: manipulation des principaux opérateurs des classes Mono
et
Flux
.
La stack Spring WebFlux
- R2DBC pour requéter des bases de données.
- Le
ReactiveTransactionManager
pour la gestion des transactions. - Spring Data comme implémentation réactive du pattern Repository.
- Le
WebClient
pour requéter des API réactives. - Le projet
reactor-kafka
pour les échanges réactifs avec un broker Kafka.
Mise en pratique: réalisation d'une API REST réactive accédant à une base de données et échangeant des messages avec un broker Kafka.
Prix et financements
2 12
Réduction de 50% pour les associations reconnues d'utilité publique.
Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- Le dispositif FNE formation si votre organisation est éligible.
- Le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).