消息队列
极永
这个作者很懒,什么都没留下…
展开
-
nats streaming消息发布
1.首先客户端连接,连接之后会发送discover消息类型,消息是发送给nats server(不是nats streaming server)。这里会返回得到nats streaming server所有消息类型的对象(pub,sub,unsub,subClose等),客户端发送消息就是发送到对应object对象。这些对象是由nats streaming server发送给nats server保存的,具体发送如下,2.发布消息,根据上一步得到的消息类型对象,发布pub消息(变量pubPr原创 2020-10-19 19:01:56 · 504 阅读 · 0 评论 -
nats streaming订阅
我这里分析的是由nats streaming启动nats的,不连接外部nats1.在nats streaming第一章,已经说明nats streaming会启动客户端连接nats,然后注册消息回调,包括客户端连接,订阅,发布等消息回调2.订阅客户端发送订阅消息,服务端调用readLoop()进行消息读取,c.parse消息解析,->(c *client) processSub-&g...原创 2020-04-12 11:37:36 · 493 阅读 · 0 评论 -
nats streaming简介与初始化
NATS是一个开源、轻量级、高性能的分布式消息中间件,实现了高可伸缩性和优雅的Publish/Subscribe模型,但他不保证消息的到达,持久性等特性,nats streaming即为解决这一问题,附一张官方两者架构图。启动过程:1.parseFlags启动参数的处理2.RunServerWithOpts初始化准备: 1)启动参数获取,启动日志系统 ...原创 2020-04-06 21:40:15 · 1099 阅读 · 0 评论 -
nats 订阅
1。client.goreadLoop()循环读取客户端发送消息2。parser.goparse(buf []byte) 解析读取的数据,for循环循环解析每个字节,通过状态机流转,比如针对订阅,先判断首字母是否是s或者S,然后赋予状态OP_S,接着分析第二个字节是否是u或者U,一步步分析最终得到订阅完整消息。3。订阅最终状态机SUB_ARG,处理函数processSub,存放订阅...原创 2020-03-11 22:35:09 · 389 阅读 · 0 评论 -
nats 客户端消息发送
parser.parse解析消息,通过状态机流转,得到是pub消息,调用client.processPub处理,解析 得到subobject对象,一些合法性校验状态机切换,获取剩余消息内容进入client.processInboundMsg进行消息处理分支选择client,跳转进入processInboundClientMsg,一些合法性校验之后进入processMsgResults,...原创 2020-03-14 21:11:00 · 557 阅读 · 0 评论 -
nats 服务端源码阅读第一章
正在上传…重新上传取消转存失败重新上传取消正在上传…重新上传取消1。第一处server.ConfigureOptions为参数的初始化过程。2。第二处server.NewServer为服务初始化过程。3。第三处server.Run为服务启动。第二处服务初始化过程: 1)。生成服务端信息结构体 struct server。server.clients为后续客户...原创 2020-03-10 22:45:07 · 499 阅读 · 0 评论