Files
microdao-daarion/infrastructure/nats/init-streams.sh
Apple 8fe0b58978 🚀 NATS JetStream: K8s deployment + streams + job schema v1
- K8s deployment (2 replicas, PVC, initContainer для server_name)
- Streams definitions (MM_ONLINE, MM_OFFLINE, MM_WRITE, MM_EVENTS)
- Job payload schema (JSON v1 з idempotency)
- Worker contract (capabilities + ack/retry)
- Init streams script
- Оновлено ARCHITECTURE-150-NODES.md (Control-plane vs Data-plane)

TODO: Auth (nkeys), 3+ replicas для prod, worker-daemon implementation
2026-01-10 10:02:25 -08:00

96 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Ініціалізація NATS JetStream streams для Memory Module
# Використання: ./init-streams.sh <nats-url>
set -e
NATS_URL=${1:-"nats://nats-client.nats:4222"}
echo "🚀 Ініціалізація NATS JetStream streams..."
echo "NATS URL: $NATS_URL"
# Перевірка доступності NATS
if ! nats --server="$NATS_URL" server check jetstream 2>/dev/null; then
echo "❌ NATS JetStream не доступний. Перевірте deployment."
exit 1
fi
echo ""
echo "=== Створення Stream MM_ONLINE ==="
nats --server="$NATS_URL" stream add MM_ONLINE \
--subjects="mm.embed.online,mm.retrieve.online,mm.summarize.online" \
--storage=file \
--replicas=3 \
--max-age=30m \
--max-deliver=3 \
--ack \
--discard=old \
--duplicate-window=5m \
--retention=limits
echo ""
echo "=== Створення Stream MM_OFFLINE ==="
nats --server="$NATS_URL" stream add MM_OFFLINE \
--subjects="mm.embed.offline,mm.index.offline,mm.backfill.offline" \
--storage=file \
--replicas=3 \
--max-age=7d \
--max-deliver=10 \
--ack \
--discard=old \
--retention=limits
echo ""
echo "=== Створення Stream MM_WRITE ==="
nats --server="$NATS_URL" stream add MM_WRITE \
--subjects="mm.qdrant.upsert,mm.pg.write,mm.neo4j.write" \
--storage=file \
--replicas=3 \
--max-age=7d \
--max-deliver=10 \
--ack \
--discard=old \
--retention=limits
echo ""
echo "=== Створення Stream MM_EVENTS ==="
nats --server="$NATS_URL" stream add MM_EVENTS \
--subjects="mm.event.audit,mm.event.status" \
--storage=file \
--replicas=3 \
--max-age=30d \
--ack \
--discard=old \
--retention=limits
echo ""
echo "=== Створення Consumer online-worker-tier-a ==="
nats --server="$NATS_URL" consumer add MM_ONLINE online-worker-tier-a \
--durable=online-worker-tier-a \
--ack=explicit \
--ack-wait=30s \
--max-ack-pending=5000 \
--filter="mm.embed.online" \
--deliver=all \
--max-deliver=3 \
--backoff=1s,5s,30s
echo ""
echo "=== Створення Consumer offline-worker-tier-b ==="
nats --server="$NATS_URL" consumer add MM_OFFLINE offline-worker-tier-b \
--durable=offline-worker-tier-b \
--ack=explicit \
--ack-wait=5m \
--max-ack-pending=10000 \
--filter="mm.embed.offline" \
--deliver=all \
--max-deliver=10 \
--backoff=10s,1m,5m,30m
echo ""
echo "=== Перевірка streams ==="
nats --server="$NATS_URL" stream ls
echo ""
echo "✅ Streams створено успішно!"