reactor-aeron
reactor-aeron copied to clipboard
A reactive driver for Aeron transport (https://github.com/real-logic/aeron)
Reactor Aeron
Reactor Aeron offers non-blocking and backpressure-ready relable UDP
clients & servers based on Aeron Efficient reliable UDP unicast, UDP multicast, and IPC message transport. it is inspired by reactor-netty
Getting it
Reactor Aeron requires Java 8 or + to run.
With Maven from Maven Central repositories (stable releases only):
<!-- https://mvnrepository.com/artifact/io.scalecube/scalecube-reactor-aeron -->
<dependency>
<groupId>io.scalecube</groupId>
<artifactId>reactor-aeron</artifactId>
<version>x.y.z</version>
<type>pom</type>
</dependency>
Getting Started
Here is a very simple server and the corresponding client example
AeronResources resources = new AeronResources().useTmpDir().start().block();
AeronServer.create(resources)
.options("localhost", 13000, 13001)
.handle(
connection ->
connection
.inbound()
.receive()
.asString()
.log("receive")
.then(connection.onDispose()))
.bind()
.block()
.onDispose(resources)
.onDispose()
.block();
AeronResources resources = new AeronResources().useTmpDir().start().block();
AeronClient.create(resources)
.options("localhost", 13000, 13001)
.handle(
connection1 -> {
System.out.println("Handler invoked");
return connection1
.outbound()
.sendString(Flux.fromStream(Stream.of("Hello", "world!")).log("send"))
.then(connection1.onDispose());
})
.connect()
.block()
.onDispose(resources)
.onDispose()
.block();
Building from Source
$ git clone [email protected]:scalecube/reactor-aeron.git
$ cd reactor-aeron
$ mvn clean install
Performance results
Performance is the key focus. Aeron is designed to be the highest throughput with the lowest and most predictable latency possible of any messaging system.
Benchmark: reactor-aeron vs reactor-netty vs pure-aeron vs rsocket running on AWS C5.xlarge
-
Latency (C5.xlarge) - Aeron vs Reactor-Aeron vs Reactor-Netty vs RSocket-Aeron vs RSocket-netty
-
Throughput (C5.xlarge) - Aeron vs Reactor-Aeron vs Reactor-Netty vs RSocket-Aeron vs RSocket-netty
Code style
See the reference on scalecube site
License
Reactor Aeron is Open Source Software released under the Apache License 2.0