求与NATS CLI的reply/request命令等价的拆分式Python示例
NATS 请求响应模式拆分Python示例
先确保安装依赖:
pip install nats-py
服务端(Reply 方)代码
创建文件 nats_reply.py,这是独立的服务进程,可启动多个实例实现轮询:
import asyncio from nats.aio.client import Client as NATS async def run(): nc = NATS() # 连接本地NATS服务器(默认端口4222) await nc.connect("nats://localhost:4222") async def request_handler(msg): # 打印收到的请求内容 print(f"收到请求: {msg.data.decode()}") # 回复固定内容 await nc.publish(msg.reply, b"OK, I CAN HELP!!!") # 订阅指定subject,处理请求 await nc.subscribe("greet.sue", cb=request_handler) # 保持服务运行 await asyncio.Future() if __name__ == "__main__": asyncio.run(run())
客户端(Request 方)代码
创建文件 nats_request.py,用于发起请求:
import asyncio from nats.aio.client import Client as NATS async def run(): nc = NATS() await nc.connect("nats://localhost:4222") # 发起请求,超时设置为5秒 response = await nc.request("greet.sue", b"I need help!", timeout=5) print(f"收到响应: {response.data.decode()}") await nc.close() if __name__ == "__main__": asyncio.run(run())
运行方式
- 打开两个终端,分别运行服务端:
python nats_reply.py - 打开第三个终端,运行客户端发起请求:
python nats_request.py - 多次运行客户端,会看到两个服务端实例以**round-robin(轮询)**的方式交替处理请求并回复。
内容的提问来源于stack exchange,提问作者user1513388
相关产品推荐
相关产品推荐

