Backpressure-ready components to encode, decode, send (unicast, multicast or request/response) and serve connections :
- reactor-aeron : Efficient Unicast/Multicast reactive-streams transport for Aeron
- reactor-netty : Client/Server interactions for UDP/TCP/HTTP
- reactor-codec : Reactive-Streams decoders/encoders (Codec) including compression, serialization and such.
An implementation of Reactive Streams over Aeron supporting both unicast and multicast modes of data sending.
- Snapshot : 2.5.0.BUILD-SNAPSHOT ( Java 8+ required )
- Milestone : TBA ( Java 8+ required )
With Gradle from repo.spring.io or Maven Central repositories (stable releases only):
repositories {
maven { url 'http://repo.spring.io/snapshot' }
//maven { url 'http://repo.spring.io/milestone' }
mavenCentral()
}
dependencies {
compile "io.projectreactor:reactor-aeron:2.5.0.BUILD-SNAPSHOT"
}A combination of AeronSubscriber playing a role of signals sender and AeronFlux playing a role of signals receiver allows transporting data from a sender to a receiver over Aeron in both unicast and multicast modes.
AeronSubscriber awaiting for connections from AeronFlux:
AeronSubscriber subscriber = AeronSubscriber.create(Context.create()
.senderChannel("udp://serverbox:12000"));
Flux.range(1, 10).map(i -> Buffer.wrap("" + i)).subscribe(subscriber); // sending 1, 2, ..., 10 via AeronAeronFlux connecting to AeronSubscruber above:
Flux<Buffer> receiver = AeronFlux.listenOn(Context.create()
.senderChannel("udp://serverbox:12000") // sender channel specified for AeronSubscriber
.receiverChannel("udp://clientbox:12001"));
receiver.subscribe(System.out::println); // output: 1, 2, ..., 10A Reactive Streams Processor which plays roles of both signal sender and signal receiver locally and also allows remote instances of AeronFlux to connect to it via Aeron and receive signals.
A processor sending signals via Aeron:
AeronProcessor processor = AeronProcessor.create(Context.create()
.senderChannel("udp://serverbox:12000"));
Flux.range(1, 1000000).map(i -> Buffer.wrap("" + i)).subscribe(processor);
processor.subscribe(System.out::println);A receiver connecting to the processor above and receiving signals:
Flux<Buffer> receiver = AeronFlux.listenOn(Context.create()
.senderChannel("udp://serverbox:12000")
.receiverChannel("udp://clientbox:12001"));
receiver.subscribe(System.out::println);http://projectreactor.io/io/docs/reference/
http://projectreactor.io/io/docs/api/
Licensed under Apache Software License 2.0
Sponsored by Pivotal
