队列订阅

订阅一个 队列组 与单独订阅主题只有一点点不同。应用程序订阅时只需包含一个队列名称即可。而服务器会在队列组的所有成员之间做负载均衡。在 NATS 集群中,每个成员都有相同的机会接收到特定的消息。

请注意,NATS 中的队列组是动态的,无需任何服务器配置。

例如,要订阅名为 workers 的队列,并监听主题 updates

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

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

// Create a queue subscription on "updates" with queue name "workers"
if _, err := nc.QueueSubscribe("updates", "workers", func(m *nats.Msg) {
    wg.Done()
}); err != nil {
    log.Fatal(err)
}

// Wait for messages to come in
wg.Wait()

如果你运行此示例,并同时运行发送到 updates 的发布示例,你会看到其中一个实例会收到一条消息,而其他实例则不会。但接收消息的实例可能会发生变化。

最后更新于