异步订阅

异步订阅使用某种形式的回调来在消息到达时通知应用程序。这些订阅通常更容易使用,但确实会占用库内部的一些工作和资源(例如线程)。请查阅您所使用的库的文档,了解与异步订阅相关的任何资源使用情况。

注意:对于给定的订阅,消息是串行分发的,每次只分发一条消息。如果您的应用程序不关心处理顺序,并希望能够并行处理消息,则应由应用程序自己负责将收到的消息移至某个内部队列,以便由线程或协程进行处理。

以下示例订阅主题 updates 并处理传入的消息:

nc, err := nats.Connect("demo.nats.io")
if err != nil {
    log.Fatal(err)
}
defer nc.Close()

// Use a WaitGroup to wait for a message to arrive
wg := sync.WaitGroup{}
wg.Add(1)

// Subscribe
if _, err := nc.Subscribe("updates", func(m *nats.Msg) {
    wg.Done()
}); err != nil {
    log.Fatal(err)
}

// Wait for a message to come in
wg.Wait()

最后更新于