Skip to content

Commit

Permalink
0.5.2
Browse files Browse the repository at this point in the history
  • Loading branch information
tyt2y3 committed Nov 30, 2024
1 parent 98d5cfb commit 4f522e7
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 16 deletions.
28 changes: 23 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,34 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## Pending
## 0.5.2 - 2024-11-30

### `sea-streamer-socket` 0.5.1 - 2024-09-02
### `sea-streamer-types`

* Added `From<Url>` and `FromIterator<Url>` for `StreamerUri` https://github.com/SeaQL/sea-streamer/pull/28
* Impl `Default` for `Payload`
* Impl serde `Serialize` & `Deserialize` for `StreamKey`

### `sea-streamer-socket`

* Compile socket without stdio backend https://github.com/SeaQL/sea-streamer/pull/35

### Enhancements
### `sea-streamer-redis`

* Added `From<Url>` and `FromIterator<Url>` for `StreamerUri` https://github.com/SeaQL/sea-streamer/pull/28
* `Streamer::connect` now accepts `S: Into<StreamerUri>`
* Support nanosecond timestamp in Redis (under feature flag `nanosecond-timestamp`)
* Support custom message field
* Added `RedisProducer::send_with_ts` to specify custom timestamp
* Added `RedisProducer::flush_immut`
* Added `RedisProducer::trim` to perform `XTRIM MAXLEN`
* Fixed `capacity overflow` error in some cases

### `sea-streamer-file`

* Added a special `SEA_STREAMER_WILDCARD` stream key to subscribe to all streams in a file

### `sea-streamer-fuse`

* Added a `StreamJoin` component for joining multiple streams by timestamp

## 0.5.0 - 2024-04-24

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ members = [

[package]
name = "sea-streamer"
version = "0.5.0"
version = "0.5.2"
authors = ["Chris Tsang <[email protected]>"]
edition = "2021"
description = "🌊 The stream processing toolkit for Rust"
Expand Down
25 changes: 22 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ SeaStreamer is a toolkit to help you build real-time stream processors in Rust.

1. Async

SeaStreamer provides an async API, and it supports both `tokio` and `async-std`. In tandem with other async Rust libraries,
SeaStreamer provides an async and non-blocking API with no locks on the hot path. Supporting both `tokio` and `async-std`,
you can build highly concurrent stream processors.

2. Generic

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

3. Testable

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

4. Micro-service Oriented
Expand Down Expand Up @@ -145,6 +145,20 @@ cargo run --bin consumer -- --stream $STREAMER_URI/hello2
kill %1 %2
```

With File:

```shell
# Create the file
file=/tmp/sea-streamer-$(date +%s)
touch $file && echo "File created at $file"
# Produce some input
cargo run --bin producer -- --stream file://$file/hello &
# Replay the input
cargo run --bin consumer -- --stream file://$file/hello
# Start the processor, producing some output
cargo run --bin processor -- --input file://$file/hello --output stdio:///hello
```

With Stdio:

```shell
Expand All @@ -153,6 +167,11 @@ cargo run --bin producer -- --stream stdio:///hello1 | \
cargo run --bin processor -- --input stdio:///hello1 --output stdio:///hello2
```

## Production

SeaStreamer File powers the event stream of [FireDBG](https://firedbg.sea-ql.org/).
We use SeaStreamer Redis heavily ourselves in production.

## Architecture

The architecture of [`sea-streamer`](https://docs.rs/sea-streamer) is constructed by a number of sub-crates:
Expand Down
2 changes: 1 addition & 1 deletion sea-streamer-fuse/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "sea-streamer-fuse"
version = "0.5.0"
version = "0.5.2"
authors = ["Chris Tsang <[email protected]>"]
edition = "2021"
description = "Stream processing toolbox"
Expand Down
2 changes: 1 addition & 1 deletion sea-streamer-redis/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "sea-streamer-redis"
version = "0.5.0"
version = "0.5.2"
authors = ["Chris Tsang <[email protected]>"]
edition = "2021"
description = "🌊 SeaStreamer Redis Backend"
Expand Down
2 changes: 1 addition & 1 deletion sea-streamer-socket/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "sea-streamer-socket"
version = "0.5.1"
version = "0.5.2"
authors = ["Chris Tsang <[email protected]>"]
edition = "2021"
description = "🌊 SeaStreamer backend-agnostic Socket API"
Expand Down
2 changes: 1 addition & 1 deletion sea-streamer-types/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "sea-streamer-types"
version = "0.5.0"
version = "0.5.2"
authors = ["Chris Tsang <[email protected]>"]
edition = "2021"
description = "🌊 SeaStreamer Traits & Types"
Expand Down
25 changes: 22 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@
//!
//! 1. Async
//!
//! SeaStreamer provides an async API, and it supports both `tokio` and `async-std`. In tandem with other async Rust libraries,
//! SeaStreamer provides an async and non-blocking API with no locks on the hot path. Supporting both `tokio` and `async-std`,
//! you can build highly concurrent stream processors.
//!
//! 2. Generic
//!
//! We provide integration for Redis & Kafka / Redpanda behind a generic trait interface, so your program can be backend-agnostic.
//! We provide integration for Redis & Kafka behind a generic trait interface, so your program can be backend-agnostic.
//!
//! 3. Testable
//!
//! SeaStreamer also provides a set of tools to work with streams via unix pipes, so it is testable without setting up a cluster,
//! SeaStreamer also provides a set of tools to work with streams via unix files / pipes, so it is testable without setting up a cluster,
//! and extremely handy when working locally.
//!
//! 4. Micro-service Oriented
Expand Down Expand Up @@ -145,6 +145,20 @@
//! kill %1 %2
//! ```
//!
//! With File:
//!
//! ```shell
//! # Create the file
//! file=/tmp/sea-streamer-$(date +%s)
//! touch $file && echo "File created at $file"
//! # Produce some input
//! cargo run --bin producer -- --stream file://$file/hello &
//! # Replay the input
//! cargo run --bin consumer -- --stream file://$file/hello
//! # Start the processor, producing some output
//! cargo run --bin processor -- --input file://$file/hello --output stdio:///hello
//! ```
//!
//! With Stdio:
//!
//! ```shell
Expand All @@ -153,6 +167,11 @@
//! cargo run --bin processor -- --input stdio:///hello1 --output stdio:///hello2
//! ```
//!
//! ## Production
//!
//! SeaStreamer File powers the event stream of [FireDBG](https://firedbg.sea-ql.org/).
//! We use SeaStreamer Redis heavily ourselves in production.
//!
//! ## Architecture
//!
//! The architecture of [`sea-streamer`](https://docs.rs/sea-streamer) is constructed by a number of sub-crates:
Expand Down

0 comments on commit 4f522e7

Please sign in to comment.