Redis Streams
Cloud Agnostic
Open Source
Listens for notifications via Redis Streams consumer groups. Lightweight and works anywhere Redis runs, making it an excellent choice for cloud-agnostic deployments.
Source code: Notiway.Plugins.Portable.Buffers.RedisStreams
Compatibility
| Pairs with | Redis Pub/Sub Broker |
| Product | Notiway Notify |
Installation
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
Infra__Plugins__Buffer__Name | Yes | — | Set to RedisStreams |
Infra__Plugins__Buffer__Version | Yes | — | Set to 0.16.0 |
Infra__Plugins__Buffer__Config__ConnectionString | Yes | — | Redis connection string (e.g., localhost:6379) |
Infra__Plugins__Buffer__Config__StreamKey | No | notiway:notifications | Redis Stream key to consume from |
Infra__Plugins__Buffer__Config__ConsumerGroup | No | notiway-gateway | Consumer group name for coordinated consumption |
Infrastructure
- Running Redis instance — v5.0+ required (Streams support).
- The stream and consumer group are created automatically by the plugin on startup. No manual setup needed.
Docker Compose
docker-compose.yml
services:
notiway:
image: notiway/notify:portable-0.6.0
ports:
- "5000:8080"
environment:
- Infra__Plugins__Buffer__Name=RedisStreams
- Infra__Plugins__Buffer__Version=0.16.0
- Infra__Plugins__Buffer__Config__ConnectionString=redis:6379
- Infra__Plugins__Buffer__Config__StreamKey=notiway:notifications
- Infra__Plugins__Buffer__Config__ConsumerGroup=notiway-gateway
redis:
image: redis:7-alpine
ports:
- "6379:6379"Usage
Publish notifications to the Redis Stream from your backend. The message body must be the notification JSON.
var redis = ConnectionMultiplexer.Connect("localhost:6379");
var db = redis.GetDatabase();
await db.StreamAddAsync("notiway:notifications", "data", JsonSerializer.Serialize(notification));const Redis = require("ioredis");
const redis = new Redis();
await redis.xadd("notiway:notifications", "*", "data", JSON.stringify(notification));import redis, json
r = redis.Redis()
r.xadd("notiway:notifications", {"data": json.dumps(notification)})