nsq 消费消息有延迟, 怎么通过配置让 nsq 收到消息后, 订阅的消费者能够立即收到消息.

发布于 2022-09-04 00:10:23 字数 281 浏览 20 评论 0

我简单部署了一下 nsqd+nsqlookupd

我的程序同时作为生产者(收到post请求后生产消息), 也作为消费者(消费post来的消息)
发消息到 nsqd.
消费消息通过 nsqlookupd 查询, 来获取消息.

测试发现了一个奇怪的现象.

有的时候, 我生产一个消息后, 消费者这边没有立即收到消息. 跟数据量没有关系, 量也不大, 就是测试 3-4 条消息而已.

可能是什么问题? 我nsq没有什么特殊的配置.

怎么配置让 nsq 及时性更好一些?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

汹涌人海 2022-09-11 00:10:23

我们在线上使用过程中也发现了这个问题,经过实际测试发现是在我们的使用过程中Consumer的默认MaxInFlight长度为1导致的。因为我们nsq是集群化使用,如果值为1,consumer仅处理一个nsqd单点消息(RDY 1),则会出现在另外的nsqd单点的消息需要很长时间被消费。

实际建议这个值应该大于等于实际的nsqd节点。

左耳近心 2022-09-11 00:10:23

一开始,生产者没发布消息,消费者通过nsqlookupd找不到到topic的发送者nsqd( got response 404 Not Found "{"message":"TOPIC_NOT_FOUND"}"
),然后去轮询,直到生产者发布消息后 才能找到nsqd节点后才会把消息一次性收到,这个延迟应该是轮询时休息的时间

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文