我是来自Node世界的Go新手,我正在使用官方的Bitly Go客户建立消费者。我正在使用AddConcurrentHandlers生成50个goroutine,以处理消息的紧急状态。问题是,我的使用者无法在nsq上留下大量未处理/接收到的消息。有人遇到过这种情况么?
我在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>")
Best Answer-推荐答案 strong>
cfg.MaxInFlight 处理“此消费者实例将允许在运行中的最大消息数量”。consumer source中提供了更多详细信息
将cfg.MaxInFlight 设置为合理的值,因为defaults to 1
一个示例配置是available in the documentation,将其设置为1000。这可能适用于您的应用程序,可能不适用。并且,您最好对其进行监视,因为配置错误可能会导致truncated messages。
关于go - nsq go客户端跟不上,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/29243277/
|