Nats 消息总线相关介绍(五):发送消息相关
发布时间
阅读量:
阅读量
路由类型
Nats topic 有 2 种类型:
- 广播类型
- 队列类型(随机 1 个消费者,发送消息)
订阅信息类型
- 消费者在本地节点
- 消费者在远端节点
Sublist
Nats 节点均有所有订阅信息,存在 Sublist 中
Sublist 重要字段:
type subscription struct {
client *client
}
type SublistResult struct {
psubs []*subscription
qsubs [][]*subscription // don't make this a map, too expensive to iterate
}
// A Sublist stores and efficiently retrieves subscriptions.
type Sublist struct {
cache map[string]*SublistResult
}
上述字段有以下关联:
Sublist -- 某订阅 --> SublistResult -----广播类型----> psubs --------->client ---------连接类型 CLIENT ----> 本地消费者
|||
|------------队列类型---> qsubs -----| |----连接类型 ROUTER ----> 远端消费者
容易看不懂的地方
subscription 里字段 client ,实际上有 2 种:
- CLIENT 代表本地节点与客户端之间的连接目标。
- ROUTER 表示本地节点与远程 Nats 设备之间的链接关系。
在 INFO 命令、 SUB 命令、 RS+ 命令,处理过程种,对应填充了不同连接对象
发送消息过程
processInboundMsg -------本地------> processInboundClientMsg
||
|----转发------> processInboundRoutedMsg
在函数体内,我们调用Sublist.match方法以返回SublistResult对象;随后将循环处理来自pibs或随机生成的qubs,并由客户端发送相关信息。
全部评论 (0)
还没有任何评论哟~
