Cluster Client
ergo-aeron-cluster is an experimental Rust client for Aeron Cluster. It uses
rusteron for transport and ergo-sbe-generated codecs for Aeron’s Cluster
protocol.
Hobby project. Do not use it as a production substitute for official Aeron Cluster client support.
Scope
The crate implements client-side operations:
- synchronous and poll-driven connection;
- ingress
offerand explicittry_claim; - regular and controlled egress polling;
- authentication challenges and credentials;
- keep-alives and close requests;
- session events, administrative responses, and leader changes.
The Java Aeron process still provides the media driver, archive, consensus module, clustered services, election, recovery, and operational tooling. This crate implements none of those server-side components.
Features and harness
The published crate has no extra features. Java Cluster launch support lives in
the unpublished workspace crate ergo-aeron-cluster-test-harness and requires
a JDK (17 or newer; CI runs Temurin 25) plus locally built Aeron artifacts. See
Java for Archive and Cluster
for which Java to run the cluster on and the recommended JVM and Aeron settings:
just build-aeron-jars
just test-aeron-cluster-harness
The harness, examples, integration tests, reference codecs, and benchmarks are excluded from the published crate package.
Verify the crate
cargo test -p ergo-aeron-cluster
cargo clippy -p ergo-aeron-cluster --all-targets -- -D warnings
RUSTDOCFLAGS="-D warnings" cargo doc -p ergo-aeron-cluster --no-deps
cargo bench -p ergo-aeron-cluster --no-run
cargo package -p ergo-aeron-cluster --list --allow-dirty
Run just bench-cluster for the maintained codec comparisons. See
sbe/BENCHMARKS.md
for the common benchmark rules.
Limitations
Limitations, Aeron and rusteron versions, schema identities, failure modes and what CI runs against a live cluster: Compatibility.
Apache-2.0.