Files
nats-python/broadcast/broadcast_client.py
T
2026-10-02 10:27:51 +02:00

52 lines
1.3 KiB
Python

import asyncio
import os
from faststream.nats import NatsBroker
from faststream.nats.message import NatsMessage
from broadcast.models import ProbeRegister, ProbeHeartBeat, ProbeUnregister
NATS_SERVERS = os.getenv('NATS_URL', 'nats://localhost:4222').split(',')
NATS_TOKEN = os.getenv('NATS_TOKEN', '')
broker = NatsBroker(servers=NATS_SERVERS, token=NATS_TOKEN)
async def main():
msg_register = ProbeRegister(
command="register",
probe_id="prvni",
capabilities="capabilities",
probe_type="mtr"
)
msg_heart_beat = ProbeHeartBeat(
command="hartbeat",
probe_id="prvni",
status="OK"
)
msg_unregister = ProbeUnregister(
command="unregister",
probe_id="prvni",
)
await broker.connect()
#response = await broker.publish(msg.model_dump(), subject=f"discovery.probe")
response: NatsMessage = await broker.request(
msg_register.model_dump(),
subject="discovery.probe",
timeout=3,
)
print(f"{await response.decode()=}")
await asyncio.sleep(5)
await broker.publish(msg_heart_beat.model_dump(), subject=f"discovery.probe")
await asyncio.sleep(5)
await broker.publish(msg_unregister.model_dump(), subject=f"discovery.probe")
await broker.stop()
if __name__ == "__main__":
asyncio.run(main())