FerroFeed
Redis sink example
Emit normalized md:v1 events for downstream consumers.
The Redis sink is the common handoff from FerroFeed into downstream analytics
and replay systems. It writes normalized EmittedEvent payloads under
session-keyed md:v1 streams.
[runtime]
ui = "none"
[[venues]]
id = "coinbase-btcusd"
exchange = "coinbase"
symbols = ["BTC-USD"]
channels = ["trades", "book"]
[[sinks]]
type = "redis"
url = "redis://127.0.0.1:6379"
key_prefix = "md:v1"Each emitted record preserves the venue id, normalized exchange, symbol,
exchange timestamp when supplied, local ingest timestamp, and typed event kind.
Downstream readers should treat the Redis payload as the serialized transport
for the EmittedEvent API contract.
use ferro_feed::model::{EmittedEvent, EventKind};
fn handle(event: EmittedEvent) {
if let EventKind::Trade(trade) = event.event.kind {
println!(
"{} {} {} @ {}",
event.venue_id,
event.event.symbol,
trade.qty,
trade.price
);
}
}