nsq go客户端无法跟上

时间:2015-03-24 21:30:30

标签: go nsq

我是来自Node世界的Go新手,我正在使用官方的Bitly Go客户端构建消费者。我正在使用AddConcurrentHandlers来生成50个goroutine来处理消息的消防软管。问题是我的消费者落后于在nsq上留下指数未处理/接收的消息。还有其他人遇到过这个吗?

我在Node中构建了同样的东西,看看是否存在服务器或NSQ配置问题,并且能够尽快处理所有消息。

GO CODE:

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>")

2 个答案:

答案 0 :(得分:4)

cfg.MaxInFlight处理“此comsumer实例允许的最大邮件数量...”consumer source

中提供了更多详细信息

cfg.MaxInFlight设置为合理的,defaults to 1

示例配置为available in the documentation,其中设置为1000.这可能适用于您的应用程序,也可能不适合您的应用程序;并且,您最好对其进行监控,因为错误配置可能会导致truncated messages

答案 1 :(得分:0)

另一种加速nsq消费者的方法可以在这里找到:https://github.com/nsqio/go-nsq/issues/187

其中一个对我有用,在nsqd上增加--max-rdy-count,这样可以增加消费者的--max_in_flight甚至高于默认的2500。