Skip to content
Please note that GitHub no longer supports Internet Explorer.

We recommend upgrading to the latest Microsoft Edge, Google Chrome, or Firefox.

Learn more
Rust GetEventStore TCP Client
Rust
Branch: master
Clone or download
Latest commit 0cda628 Jan 27, 2020

README.md

eventstore-rs

Crates.io Crates.io Travis (.org) Discord Crates.io

Rust EventStore TCP Client.

Talk and exchange ideas in our dedicated Discord Server

State of implemented features

  • Can connect to GetEventStore >=4.* servers.
  • Connection health tracking.
  • Operation timeout detection and retry.
  • Write events.
  • Read events (including $all stream).
  • Read/Write stream metadata.
  • Transactions.
  • Delete stream.
  • Volatile Subscriptions.
  • Catchup Subscriptions.
  • Persistent Subscriptions.
  • Support connection to server clusters. (through gossip, using custom DNS server is still TODO)
  • Support SSL connection.

Example

#[macro_use]
extern crate serde_json;

use eventstore::{ Connection, EventData };
use futures::Future;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let addr = "127.0.0.1:1113".parse()?;
    let connection = Connection::builder()
        .single_node_connection(addr)
        .await;

    // It is not mandatory to use JSON as a data format however GetEventStore
    // provides great additional value if you do so.
    let payload = json!({
        "is_rust_a_nice_language": true,
    });

    let event = EventData::json("language-poll", payload)?;

    let result = connection
        .write_events("language-stream")
        .push_event(event)
        .execute()
        .await?;

    // Do something productive with the result.
    println!("{:?}", result);

    Ok(())
}

Notes

That library was tested on Linux and OSX.

Contributions and bug reports are welcome!

MIT License

You can’t perform that action at this time.