我简单部署了一下 nsqd+nsqlookupd
我的程序同时作为生产者(收到post请求后生产消息), 也作为消费者(消费post来的消息)
发消息到 nsqd.
消费消息通过 nsqlookupd 查询, 来获取消息.
测试发现了一个奇怪的现象.
有的时候, 我生产一个消息后, 消费者这边没有立即收到消息. 跟数据量没有关系, 量也不大, 就是测试 3-4 条消息而已.
可能是什么问题? 我nsq没有什么特殊的配置.
怎么配置让 nsq 及时性更好一些?
我简单部署了一下 nsqd+nsqlookupd
我的程序同时作为生产者(收到post请求后生产消息), 也作为消费者(消费post来的消息)
发消息到 nsqd.
消费消息通过 nsqlookupd 查询, 来获取消息.
测试发现了一个奇怪的现象.
有的时候, 我生产一个消息后, 消费者这边没有立即收到消息. 跟数据量没有关系, 量也不大, 就是测试 3-4 条消息而已.
可能是什么问题? 我nsq没有什么特殊的配置.
怎么配置让 nsq 及时性更好一些?
我们在线上使用过程中也发现了这个问题,经过实际测试发现是在我们的使用过程中Consumer的默认MaxInFlight长度为1导致的。因为我们nsq是集群化使用,如果值为1,consumer仅处理一个nsqd单点消息(RDY 1),则会出现在另外的nsqd单点的消息需要很长时间被消费。
实际建议这个值应该大于等于实际的nsqd节点。