快捷搜索:  汽车  科技

dubbo启动服务:Dubbo-go 源码笔记 一

dubbo启动服务:Dubbo-go 源码笔记 一// OnMessage notified when RPC server session got any message in connection func (h *RpcServerHandler) OnMessage(session getty.Session pkg interface{}) {这一函数实现了在 getty session 接收到 rpc 调用后的一系列处理:rpcHandler 有一个实现好的 OnMessage 函数,根据 getty 的 API,当 client 调用该端口时,会触发 OnMessage。上述只是启动了服务,但还没有看到触发事件的细节,点进上面的 s.newSession 可以看到,dubbo 协议为一个 getty 的 session 默认使用了如下配置:其中很重要的一个配置是 EventListener,传入的是 dubboServer

这一函数做了两个事情:构造触发器、启动服务。

  • 将传入的 Invoker 调用 chain 进一步封装,封装成一个 exporter,再将这个 export 放入 map 保存。注意!这里把 exporter 放入了 SetExporterMap中,在下面服务启动的时候,会以注册事件监听器的形式将这个 exporter 取出!
  • 调用 dubboProtocol 的 openServer 方法,开启一个针对特定端口的监听。

dubbo启动服务:Dubbo-go 源码笔记 一(1)

如上图所示,一个 Session 被传入,开启对应端口的事件监听。

至此构造出了 exporter,完成图中部分:

dubbo启动服务:Dubbo-go 源码笔记 一(2)

4. 注册触发动作

上述只是启动了服务,但还没有看到触发事件的细节,点进上面的 s.newSession 可以看到,dubbo 协议为一个 getty 的 session 默认使用了如下配置:

dubbo启动服务:Dubbo-go 源码笔记 一(3)

其中很重要的一个配置是 EventListener,传入的是 dubboServer 的默认 rpcHandler。

protocol/dubbo/listener.go:OnMessage()

rpcHandler 有一个实现好的 OnMessage 函数,根据 getty 的 API,当 client 调用该端口时,会触发 OnMessage。

// OnMessage notified when RPC server session got any message in connection func (h *RpcServerHandler) OnMessage(session getty.Session pkg interface{}) {

这一函数实现了在 getty session 接收到 rpc 调用后的一系列处理:

  • 传入包的解析

dubbo启动服务:Dubbo-go 源码笔记 一(4)

  • 根据请求包构造请求 url

dubbo启动服务:Dubbo-go 源码笔记 一(5)

猜您喜欢: