#!/bin/bash # Ініціалізація NATS JetStream streams для Memory Module # Використання: ./init-streams.sh 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 створено успішно!"