NSQ-zhaowei

一、常见组件和概念

组件/概念
说明
nsqd 消息接收、队列、分发,可以配置在有nsqlookupd的nsq集群中,更多详见
nsqlookupd 用于发现nsq集群中指定topic的nsqd们,更多详见
nsqadmin 网页界面,用于管理nsq,可以看到nsq的统计数据,包括队列积压数据,也可以新增/删除/暂停/清空topic和channel,更多详见
nsq_to_http 用于将指定topic下指定channel的消息,使用发送http请求的方式分发到指定url,更多详见
nsq_to_nsq 用于将指定topic下指定channel的消息分发到指定nsqd的指定topic,更多详见
topic 一个topic相当于一个消息队列
channel 一个topic可以有多个channel,每个channel都会消费每一条发给topic的消息

二、常见端口说明:

端口
组件
说明
4150 nsqd 一般用于发送消息到nsq队列(tcp连接),更多详见,如果使用的nsq是多台机器集群,不推荐在消费nsq消息时使用此配置,一是因为需要将所有nsqd地址都列出来,二是集群nsqd有调整时也需要变更此配置
4151 nsqd 一般用于发送消息到nsq队列(http协议),更多详见,请求示例:curl -X POST 'http://nsqd_ip:4151/pub?topic=your_topic' -d 'your_message'
4160 nsqlookupd 一般用不到
4161 nsqlookupd 一般用于发现nsq集群中指定topic的生产nsqd列表,更多详见,如果使用的nsq是多台机器集群,推荐在消费nsq消息时使用此配置,一般代码会自动与集群中的所有nsqd建立连接,当然也可以使用多个nsqd配置(不推荐)
4171 nsqadmin nsq管理界面,更多详见

三、常见参数说明:

参数
说明
topic 相当于消息队列名
channel 相当于消息队列子队列名,一个topic可以有多个channel,每个channel都会消费每一条发给topic的消息
max_in_flight 消费消息时,最大并发消费数配置,一般对于nsq集群而言,建议配置成nsqd数量的倍数,比如nsqd数量为3,而此参数配置为2,则有可能其中一个nsqd的消息永远都不被消费

四、nsqadmin界面常见参数说明:

参数
说明
参数
说明
Depth 消息积压数,在一个topic下新建一个channel后,新推送给该topic的所有消息都会发送到该channel,如果没有消费或消费速度小于生产速度,会产生积压
Memory + Disk 内存+磁盘消息积压数,nsq消息会优先放入内存中,当消息数超过mem-queue-size值(nsqd配置,一般建议此值不要设太大,以防内存使用超标)后,消息会写入磁盘
In-Flight 当前分发(消费)中的消息数
Deferred 重新入队或明确要延迟分发而未分发的消息数
Ready Count 当前连接最大并发消费数据,值为0时不会消费新的数据,最大值由消费配置的max_in_flight决定,一般对于nsq集群而言,消费使用nsqlookupd地址,max_in_flight数会被均匀地分到每个与nsqd建立的连接上,例如nsq集群有2个nsqd,与每个nsqd都建立一个连接,max_in_flight为20,则每个连接的最大Ready Count为10

五、使用经验

1、消息处理失败或超时(可配置超时时间)时会重新入队(由配置的消息最大重试次数决定),所以要保证代码的幂等性,且消费处理时间不宜太久,如果消费处理时间超过设置的超时时间且没有办法缩短,建议采用异步处理的方式,避免消息因处理超时而再次入队

posted @ 2023-03-30 14:19  一束光  阅读(131)  评论(0编辑  收藏  举报

友情链接

CFC4N