Advertisement

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)

还没有任何评论哟~