Commit 15b414c0 authored by Julien SADAOUI's avatar Julien SADAOUI
Browse files

fix: README

parent 94bdf3b4
# Reactive programming
# Coding Dojo : Reactive Programming
add some blabla
\ No newline at end of file
Bienvenue dans ce **Coding Dojo** ciblé sur l'usage de la programmation réactive, en utilisant les projets **RX Java 2** et **Reactor**.
Ce **Coding Dojo** est découpé en deux parties.
- La première partie sur **RX Java** pour apprendre les concepts de la programmation réactive, les bases de **RX Java**, la création de flux, les opérateurs, les **Scheduler** et les tests.
- La deuxième partie est axée sur la construction d'une une application web avec un flux réactif de bout en bout. Pour réaliser cette application, nous utiliserons le projet **Reactor** et le module **WebFlux** de **Spring** 5.
\ No newline at end of file
......@@ -75,13 +75,13 @@ RX Java possède plusieurs types Java afin de spécialiser certains flux :
- **Flowable** est une version améliorée de **Observable** supportant la back pressure.
### E. Level 5
### E. Level 5
Operators
Operators
RX Java est riche en opérateurs. Un opérateur permet d'altérer un flux d'événements ainsi obtenir un nouveau flux. Dans cette section, nous allons introduire certains des opérateurs les plus utilisés.
RX Java est riche en opérateurs. Un opérateur permet d'altérer un flux d'événements ainsi obtenir un nouveau flux. Dans cette section, nous allons introduire certains des opérateurs les plus utilisés.
Il existe différents types d'opérateurs classés par catégorie.
Il existe différents types d'opérateurs classés par catégorie.
- **Création** : `create`, `just`, `range`, `interval`
- **Filtrage** : `filter`, `first`, `last`, `distinct`, `skip`, `take`
......@@ -89,29 +89,29 @@ RX Java possède plusieurs types Java afin de spécialiser certains flux :
- **Combinaison** : `combineLatest`, `merge`, `concat`, `zip`
- **Agregation** : `count`, `max`, `min`, `sum`, `reduce`
### F. Level 6
### F. Level 6
Schedulers
Par défault, les flux fonctionne sur le `thread` courant, c'est-à-dire le `thread` qui a souscrit le flux. Il s'agit du `thread` appelé `main` dans les exercices précédents. La majorité de nos exemples était des traitements synchrones, excepté certains exercices. Lorsqu'une opération a de la latence, l'émission synchrone impose cette latence au `thread` qui a souscrit.
Nous allons étudier les émissions de flux asynchrone, une émission asynchrone arrive quand un producteur émet un flux dans un `thread` différent du `thread` qui a souscrit.
Les `Schedulers` de RX Java peuvent changer le comportement des `thread` d'émission et de souscription. Par exemple, nous pouvons choisir le `thread` qui émet le flux de données. Un `Scheduler` est très similaire à un `Executor` du JDK.
RX Java gére la concurrence à notre place avec deux méthodes : `subscribeOn` pour changer le `thread` de l'émetteur et `observerOn` pour changer le `thread` du consommateur.
### G. Level 7
Testing
RX Java fournit un opérateur appelé `test` permettant de retourner une instance `TestObserver`
Cet utilitaire permet de vérifier différents types de résultat attendu
- Que le consommateur `Observer` a bien été souscrit
- Que l'événement de fin du flux a bien été envoyé
- Que le nombre d'éléments est correct
- Que les éléments arrivent bien dans l'ordre
RX Java fournit un deuxième utilitaire très utile pour les tests. Il s'agit de la classe `TestScheduler`, un scheduler conçu pour les tests. Il permet de contrôler l'horloge comme avancer le temps !
\ No newline at end of file
Schedulers
Par défault, les flux fonctionne sur le `thread` courant, c'est-à-dire le `thread` qui a souscrit le flux. Il s'agit du `thread` appelé `main` dans les exercices précédents. La majorité de nos exemples était des traitements synchrones, excepté certains exercices. Lorsqu'une opération a de la latence, l'émission synchrone impose cette latence au `thread` qui a souscrit.
Nous allons étudier les émissions de flux asynchrone, une émission asynchrone arrive quand un producteur émet un flux dans un `thread` différent du `thread` qui a souscrit.
Les **Scheduler** de RX Java peuvent changer le comportement des `thread` d'émission et de souscription. Par exemple, nous pouvons choisir le `thread` qui émet le flux de données. Un **Scheduler** est très similaire à un **Executor** du JDK.
RX Java gére la concurrence à notre place avec deux méthodes : `subscribeOn` pour changer le `thread` de l'émetteur et `observerOn` pour changer le `thread` du consommateur.
### G. Level 7
Testing
RX Java fournit un opérateur appelé `test` permettant de retourner une instance **TestObserver**
Cet utilitaire permet de vérifier différents types de résultat attendu
- Que le consommateur a bien été souscrit
- Que l'événement de fin du flux a bien été envoyé
- Que le nombre d'éléments est correct
- Que les éléments arrivent bien dans l'ordre
RX Java fournit un deuxième utilitaire très utile pour les tests. Il s'agit de la classe **TestScheduler**, un scheduler conçu pour les tests. Il permet de contrôler l'horloge comme avancer le temps !
\ No newline at end of file
......@@ -28,8 +28,6 @@ dependencies {
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testImplementation("org.junit.jupiter:junit-jupiter-api")
}
configurations.all {
......@@ -39,12 +37,4 @@ configurations.all {
tasks.withType<Jar> {
enabled = false
}
tasks.withType<Test> {
useJUnitPlatform()
maxHeapSize = "1G"
testLogging.showStandardStreams = true
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment