nsq go 客户端跟不上
nsq go client can't keep up
我是来自 Node 世界的 Go 新手,我正在使用官方的 Bitly Go 客户端构建一个消费者。我正在使用 AddConcurrentHandlers 生成 50 个 goroutine 来处理大量消息。问题是我的消费者落后了,在 nsq 上留下了指数级的 unprocessed/received 消息。有没有其他人遇到过这个?
我在 Node 中构建了同样的东西,看看是否存在服务器或 NSQ 配置问题,以及它是否能够在所有消息传入时尽快处理它们。
转到代码:
q, _ := nsq.NewConsumer("chat", "golangbetches", config)
q.AddConcurrentHandlers(nsq.HandlerFunc(func(message *nsq.Message) error {
l.Debug("Got a message: %v", message)
message.Finish()
return nil
}), 50)
err := q.ConnectToNSQLookupd("<address here>")
cfg.MaxInFlight
处理,"maximum number of messages this comsumer instance will allow in-flight..." consumer source
中提供了更多详细信息
将 cfg.MaxInFlight
设置为合理的值,因为它 defaults to 1
示例配置为 available in the documentation where it is set to 1000. This may or may not be suitable for your application; and, you'd do well to monitor it, as a misconfiguration may result in truncated messages。
另一种加速 go nsq 消费者的方法可以在这里找到:https://github.com/nsqio/go-nsq/issues/187
其中一个对我有用,它在 nsqd 上增加 --max-rdy-count
,这允许增加消费者的 --max_in_flight
甚至高于默认的 2500。
我是来自 Node 世界的 Go 新手,我正在使用官方的 Bitly Go 客户端构建一个消费者。我正在使用 AddConcurrentHandlers 生成 50 个 goroutine 来处理大量消息。问题是我的消费者落后了,在 nsq 上留下了指数级的 unprocessed/received 消息。有没有其他人遇到过这个?
我在 Node 中构建了同样的东西,看看是否存在服务器或 NSQ 配置问题,以及它是否能够在所有消息传入时尽快处理它们。
转到代码:
q, _ := nsq.NewConsumer("chat", "golangbetches", config)
q.AddConcurrentHandlers(nsq.HandlerFunc(func(message *nsq.Message) error {
l.Debug("Got a message: %v", message)
message.Finish()
return nil
}), 50)
err := q.ConnectToNSQLookupd("<address here>")
cfg.MaxInFlight
处理,"maximum number of messages this comsumer instance will allow in-flight..." consumer source
将 cfg.MaxInFlight
设置为合理的值,因为它 defaults to 1
示例配置为 available in the documentation where it is set to 1000. This may or may not be suitable for your application; and, you'd do well to monitor it, as a misconfiguration may result in truncated messages。
另一种加速 go nsq 消费者的方法可以在这里找到:https://github.com/nsqio/go-nsq/issues/187
其中一个对我有用,它在 nsqd 上增加 --max-rdy-count
,这允许增加消费者的 --max_in_flight
甚至高于默认的 2500。