NSQ Producer 源码分析
作者:
威廉姆韦德惠达王 | 来源:发表于
2019-07-29 10:59 被阅读0次
producer.jpg
-
NewProducer
根据 nsqd addr 和 config。内部会验证配置,设置日志和日志级别,初始化消息、返回、错误、退出的通道。
-
TcpConn
连接 nsqd 的时机可以主动使用 ping() 或者在 pub 时自动调用。连接成功后协程运行 ReadLoop
,用来读取 PUB
同步返回和处理 Heartbeat
,再运行 WriteLoop
,用来发送指令,例如 PUB
、 DPUB
、NOP
,最后运行 Router
,封装发送指令和处理返回。准备完成后先发送 MagicV2
协议头,然后发送 Identify
指令。
-
PUB
, MPUB
, DPUB
都是发送消息,分别含义是单消息指令,多消息指令,延迟消息指令。发送时可以指定同步或异步。同步时等待 nsqd 返回 OK。
-
Heartbeat
由 nsqd 主动发起,间隔时间根据 HeartbeatInterval 配置而定。ReadLoop
接受到心跳请求后会发送 NOP
指令
cmd 格式,例如:PUB 发送消息
cmd p1 p2 p3 ...(空格分隔,换行结尾,cmd=指令名,p(n)=代表参数)
body_len(4 字节) body_content(可能不包含 body)
返回 frame 格式,例如:nsqd 返回 OK,心跳
[x][x][x][x][x][x][x][x][x][x][x][x]...
| (int32) || (int32) || (binary)
| 4-byte || 4-byte || N-byte
-------------------------------------...
size type data
本文标题:NSQ Producer 源码分析
本文链接:https://www.haomeiwen.com/subject/vcevrctx.html
网友评论