The Reactive Java Client requires Java 11 higher. Goto JDK 11 General-Availability Release for binaries for you operating systems. The Reactive Streams Java Driver does not work with an embedded version of Neo4j but needs an instance that can be addressed over the Bolt protocol.
The test infrastructure is based on Testcontainers which in turn depend on Docker. Docker must be installed on your machine to run the integration tests.
The main idea is to keep as close to the official Neo4j Java Driver as possible.
-
Not introduce new kind of result sets
-
Creating pendants to the drivers
Session#run()
methods that takes in a Cypher statement and parameters, publishing instances oforg.neo4j.driver.v1.Record
-
Facilitating the asynchronous API of the driver as much as possible
-
So far handling back pressure in the reactive
Neo4jClient
as such that it just stops requesting new records and relying on the fact that the Driver than stops fetching them
The reactive Neo4jClient
should only expose Reactive Streams interfaces.
In the long run, those will be superseded by Javas Flow classes.
The reactive Neo4jClient
internally uses Project Reactor.
The Reactive Streams initiative offers a TCK.
This TCK is meant to guide and help Reactive Streams library implementers to validate their implementations against the Reactive Streams specification.
The Publisher
returned by the Neo4jClient
are validated against the TCK in org.neo4j.reactiveclient.Neo4jClientVerificationTest
.
We validate all required and optional rules.
The examples
subproject provides several examples using several implementations of Reactive Streams to get you started.
Checkout the "Hello, Worlds" using plain Reactive Streams, Project Reactor and RxJava 2 Types:
- Michael Simons
- Gerrit Meier