Skip to content
This repository has been archived by the owner on Jan 9, 2020. It is now read-only.

Latest commit

 

History

History
57 lines (38 loc) · 3.62 KB

README.adoc

File metadata and controls

57 lines (38 loc) · 3.62 KB

Neo4j Reactive Java Client

neo4j reactive java client License Apache%202.0 green

Requirements

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.

Concepts

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 of org.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.

Validation against the Reactive Streams TCK

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.

Examples

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:

Versioning

@Deprecated

APIs marked with the `@Deprecated annotation at the class or method level will remain supported until the next major release but it is recommended to stop using them.

Maintainers

Michael Simons

michael.simons@neo4j.com

Gerrit Meier

gerrit.meier@neo4j.com