Redis Pub/Sub

Cloud Agnostic
Open Source

Distributes notifications across gateway instances via Redis Pub/Sub channels. Simple to set up and works anywhere Redis runs.

Source code: Notiway.Plugins.Portable.Brokers.RedisPubSub

Compatibility

Pairs withRedis Streams Buffer
ProductNotiway Notify

Installation

Environment Variables

VariableRequiredDefaultDescription
Infra__Plugins__Broker__NameYesSet to RedisPubSub
Infra__Plugins__Broker__VersionYesPlugin version (e.g., 0.12.0)
Infra__Plugins__Broker__Config__ConnectionStringYesRedis connection string (e.g., localhost:6379)
Infra__Plugins__Broker__Config__ChannelNonotiwayRedis Pub/Sub channel name used for broadcasting notifications

Infrastructure

  1. Running Redis instance — v5.0+ recommended (required if pairing with Redis Streams Buffer).
  2. No additional setup needed — Pub/Sub channels are created automatically when the first message is published.

Docker Compose

docker-compose.yml
services:
  notiway:
    image: notiway/notify:portable-0.5.0
    ports:
      - "5000:8080"
    environment:
      - Infra__Plugins__Broker__Name=RedisPubSub
      - Infra__Plugins__Broker__Version=0.12.0
      - Infra__Plugins__Broker__Config__ConnectionString=redis:6379
      - Infra__Plugins__Broker__Config__Channel=notiway

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

Usage

Publish notifications to the Redis channel from your backend. The message body must be the notification JSON.

var redis = ConnectionMultiplexer.Connect("localhost:6379");
var subscriber = redis.GetSubscriber();

await subscriber.PublishAsync("notiway", JsonSerializer.Serialize(notification));
const Redis = require("ioredis");

const redis = new Redis();
await redis.publish("notiway", JSON.stringify(notification));
import redis, json

r = redis.Redis()
r.publish("notiway", json.dumps(notification))
JedisPool pool = new JedisPool("localhost", 6379);
try (Jedis jedis = pool.getResource()) {
    jedis.publish("notiway", objectMapper.writeValueAsString(notification));
}
#include <sw/redis++/redis++.h>

auto redis = sw::redis::Redis("tcp://localhost:6379");
redis.publish("notiway", /* serialize notification as JSON */);