From 3b6cbfa51d9d55c9ea47481553b841744bcf76fd Mon Sep 17 00:00:00 2001 From: marys Date: Thu, 18 Sep 2025 13:01:27 +0200 Subject: [PATCH] working version --- producer.py | 32 ++++++++++++++------------------ publish.py | 20 +++++++++++--------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/producer.py b/producer.py index 5b484d1..ea1888e 100644 --- a/producer.py +++ b/producer.py @@ -5,33 +5,29 @@ import nats NATS_SERVER = "nats://localhost:4222" TOKEN = "dfji348934jdd0i24uhjd29834ijrr0345jo0r3j034n" - -async def message_handler(msg): - subject = msg.subject - reply = msg.reply - data = msg.data.decode() - print(f"Received a message on '{subject} {reply}': {data}") +count = 0 async def main(): - # It is very likely that the demo server will see traffic from clients other than yours. - # To avoid this, start your own locally and modify the example to use it. nc = await nats.connect(NATS_SERVER, token=TOKEN) - # You can also use the following for TLS against the demo server. - # - # nc = await nats.connect("tls://demo.nats.io:4443") - - + async def message_handler(msg): + subject = msg.subject + reply = msg.reply + data = msg.data.decode() + global count + print(f"Received a message on '{subject} {reply}': {data}") + await nc.publish(reply, f"response-{count}".encode("utf-8")) + count = count + 1 # Simple publisher and async subscriber via coroutine. + await nc.subscribe("foo", cb=message_handler) + await nc.subscribe("foo2", cb=message_handler) + while True: - sub = await nc.subscribe("foo", cb=message_handler) - await asyncio.sleep(0.1) - - + await asyncio.sleep(1) if __name__ == '__main__': try: asyncio.run(main()) except KeyboardInterrupt: - pass \ No newline at end of file + pass diff --git a/publish.py b/publish.py index a53c1df..bfc466b 100644 --- a/publish.py +++ b/publish.py @@ -1,29 +1,31 @@ import asyncio +from http.client import responses + import nats NATS_SERVER = "nats://localhost:4222" TOKEN = "dfji348934jdd0i24uhjd29834ijrr0345jo0r3j034n" -async def message_handler(msg): - subject = msg.subject - reply = msg.reply - data = msg.data.decode() - print(f"Received a message on '{subject} {reply}': {data}") - async def main(): # It is very likely that the demo server will see traffic from clients other than yours. # To avoid this, start your own locally and modify the example to use it. nc = await nats.connect(NATS_SERVER, token=TOKEN) inbox = nc.new_inbox() - sub = await nc.subscribe("foo") + sub = await nc.subscribe("foo2") + + async def message_handler(msg): + subject = msg.subject + reply = msg.reply + data = msg.data.decode() + print(f"Received a message on '{subject} {reply}': {data}") i = 0 while True: - msg = await nc.publish("foo", b"message", reply=inbox) + response = await nc.request("foo", b"message") + print(f"{response=}") await asyncio.sleep(5) - if __name__ == '__main__': asyncio.run(main())