Go NATS客户端Subscribe回调是否运行在独立goroutine及复用规则问询
Go语言nats-lib订阅回调执行机制解答
1. 回调是否保证运行在专属goroutine中
是,通过natsClient.Subscribe("some_subject", some_callback)注册的回调,每次触发时都会运行在独立的专属goroutine中,不会占用NATS客户端核心IO调度的goroutine,也不会和其他订阅的回调共用执行上下文。
2. 回调goroutine的调度逻辑
实际符合 b选项 描述:
- 默认配置下,每收到一条匹配订阅主题的消息,客户端都会创建一个临时goroutine执行对应回调,回调执行完成后该goroutine就会被销毁,不会为同一订阅的所有回调复用同一个固定goroutine。
- 如果你需要实现单订阅的回调goroutine复用,可以改用
SubscribeAsync方法获取消息通道,自行启动固定goroutine消费通道内的消息即可。
内容的提问来源于stack exchange,提问作者XDS
相关产品推荐
相关产品推荐

