基本上是主题所说的。我很想知道每次调用回调方法时,golang 的 nats-lib 是否确保回调将在其自己的 goroutine 上运行(我 99% 确定它确实如此,但我需要确保,因为我可以'在 nats 中找不到任何明确说明的文档,如果我遗漏了什么,请随意复制粘贴任何链接)。如果回调确实在它自己的 goroutine 中运行,我也很想知道是否:一个。每次特定订阅都使用相同的 goroutine或 b。每次触发回调都会创建一个短暂的 goroutine:在这种情况下,goroutine 在回调完成其工作后被释放
1 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
当您调用conn.Subscribe("some_subject", someCallback)时,如果定义了回调,它将执行这段代码:
// If we have an async callback, start up a sub specific
// Go routine to deliver the messages.
if cb != nil {
sub.typ = AsyncSubscription
sub.pCond = sync.NewCond(&sub.mu)
go nc.waitForMsgs(sub)
}
它为创建的订阅启动一个 goroutine。当消息到达时,它会执行waitForMsgsgoroutine 中定义的回调。
简而言之,答案是 a.,它每次针对特定订阅使用相同的 goroutine。
- 1 回答
- 0 关注
- 62 浏览
添加回答
举报
0/150
提交
取消