fix(fabric): use broadcast subject for NATS capabilities discovery
NATS wildcards (node.*.capabilities.get) only work for subscriptions, not for publish. Switch to a dedicated broadcast subject (fabric.capabilities.discover) that all NCS instances subscribe to, enabling proper scatter-gather discovery across nodes. Made-with: Cursor
This commit is contained in:
@@ -275,6 +275,7 @@ async def report_latency_endpoint(request: Request):
|
||||
ENABLE_NATS = os.getenv("ENABLE_NATS_CAPS", "false").lower() in ("true", "1", "yes")
|
||||
NATS_URL = os.getenv("NATS_URL", "nats://dagi-nats:4222")
|
||||
NATS_SUBJECT = f"node.{NODE_ID.lower()}.capabilities.get"
|
||||
NATS_BROADCAST_SUBJECT = "fabric.capabilities.discover"
|
||||
|
||||
_nats_client = None
|
||||
|
||||
@@ -304,7 +305,8 @@ async def startup_nats():
|
||||
import nats as nats_lib
|
||||
_nats_client = await nats_lib.connect(NATS_URL)
|
||||
await _nats_client.subscribe(NATS_SUBJECT, cb=_nats_capabilities_handler)
|
||||
logger.info(f"✅ NATS subscribed: {NATS_SUBJECT} on {NATS_URL}")
|
||||
await _nats_client.subscribe(NATS_BROADCAST_SUBJECT, cb=_nats_capabilities_handler)
|
||||
logger.info(f"✅ NATS subscribed: {NATS_SUBJECT} + {NATS_BROADCAST_SUBJECT} on {NATS_URL}")
|
||||
except Exception as e:
|
||||
logger.warning(f"⚠️ NATS init failed (non-fatal): {e}")
|
||||
_nats_client = None
|
||||
|
||||
Reference in New Issue
Block a user