基本上是主題所說的。我很想知道每次呼叫回呼方法時,golang 的 nats-lib 是否確保回呼將在其自己的 goroutine 上運行(我 99% 確定它確實如此,但我需要確保,因為我可以在 nats 中找不到任何明確說明的檔案 - 如果我遺漏了什么,請隨意復制粘貼任何鏈接)。
如果回呼確實在它自己的 goroutine 中運行,我也有興趣知道:
一種。每次特定訂閱都使用相同的 goroutine
或 B. 每次觸發回呼都會創建一個臨時 goroutine:在這種情況下,goroutine 在回呼完成其作業后被處理掉
uj5u.com熱心網友回復:
當您呼叫 時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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371082.html
