Skip to main content


🌊 SeaStreamer is a stream processing toolkit to help you build stream processors in Rust

Async

SeaStreamer provides an async API, and it supports both 'tokio' and 'async-std'. In tandem with other async Rust libraries, you can build highly concurrent stream processors.

Generic

We provide integration for Redis & Kafka / Redpanda behind a generic trait interface, so your program can be backend-agnostic.

Testable

SeaStreamer also provides a set of tools to work with streams via unix pipes, so it is testable without setting up a cluster, and extremely handy when working locally.

Micro-service Oriented

Let's build real-time (multi-threaded, no GC), self-contained (aka easy to deploy), low-resource-usage, long-running stream processors in Rust!

A quick taste of SeaStreamer

Here is a basic stream consumer, full example:

#[tokio::main]
async fn main() -> Result<()> {
env_logger::init();
let Args { stream } = Args::from_args();
let streamer = SeaStreamer::connect(stream.streamer(), Default::default()).await?;
let mut options = SeaConsumerOptions::new(ConsumerMode::RealTime);
options.set_auto_stream_reset(SeaStreamReset::Earliest);
let consumer: SeaConsumer = streamer
.create_consumer(stream.stream_keys(), options)
.await?;
loop {
let mess: SeaMessage = consumer.next().await?;
println!("[{}] {}", mess.timestamp(), mess.message().as_str()?);
}
}

Meet Terres, our official mascot

A friend of Ferris, Terres the hermit crab is a member of the Rustacean family.