Skip to content

sheophe/aeron-client

 
 

Repository files navigation

Aeron client written in Rust

minimum rustc version

About aeron-client

This is the fork of aeron-rs. It aims to make the library compatible with macOS and reduce the amount of unsafe code.

Aeron is efficient reliable UDP and IPC message transport. Originally it was developed by RealLogic and hosted on GitHub real-logic/aeron

Aeron has two main components:

  • Media driver
  • Client library

The client library is linked with applications and allows several applications to talk with each other through Media driver(s). For more information about how Aeron works please read documentation.

aeron-client library implements client functionality to work with Aeron Media driver. To get functioning system one need to download (and compile) Media driver from real-logic/aeron and write some Aeron enabled application using aeron-client. Examples of such applications could be found inside the bin and in the library integration tests.

Why Aeron?

Aeron could be a good choice if you need to organize fast and ordered message streams. There are number of widely used messaging frameworks and to choose the right one for your particular case it is better to test them if close to real-life situations and compare the performance. Just some hints why Aeron could be a good choice:

  • Supports various transmission media without the need to change application code when switching between the media. Application can use IPC (shared memory) today and could switch to UDP in a matter of config change and restart.
  • Can work over UDP which is generally faster than over TCP (as some other messaging systems do)
  • Provides reliable and ordered message flow (even over UPD). Not all fast messaging frameworks guaranty messages order but Aeron do

Status

  • Integration tests are successful on macOS and Linux
  • Unit test are mainly successful (224/227 ok on macOS)

Running library tests

Integration tests for aeron-client assume that Media Driver executable (aeronmd) is present in the PATH. So prior to run these tests install aeronmd accordingly. Also integration tests designed to run sequentially one by one. This is beacuse each of these tests executes its own aeronmd process, and tests would conflict and fail when run simultaneously. Therefore use the following command:

cargo test -- --test-threads=1

To run integration tests only use the following command:

cargo test --test '*' -- --test-threads=1

About

Rust aeron-client port

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.9%
  • RenderScript 0.1%