美文网首页
nsqd启动入口

nsqd启动入口

作者: fake_smile_boy | 来源:发表于2018-12-10 10:06 被阅读0次

nsqd的启动代码入口在apps/nsqd/nsqd.go

apps/nsqd/nsqd.go

nsq使用svc包来控制nsqd守护进程的启停

type program struct {
    nsqd *nsqd.NSQD
}

func main() {
    prg := &program{}
    if err := svc.Run(prg, syscall.SIGINT, syscall.SIGTERM); err != nil {
        log.Fatal(err)
    }
}

func (p *program) Init(env svc.Environment) error {...}

func (p *program) Start() error {...}

func (p *program) Stop() error {...}

svc包能让程序安全的推出,从代码中看出nsqd接收两个信号可退出:SIGINT(输入任意健) 和 SIGTERM(kill)。

重要逻辑均在Start()函数中,该函数主要做了三件事

  1. 接收命令行参数,根据参数创建nsqd结构
  2. 加载消息和持久化消息
  3. 调用nsqd.Main()启动
opts := nsqd.NewOptions()

该函数创建一个默认的nsqd参数

options.Resolve(opts, flagSet, cfg)
nsqd := nsqd.New(opts)

利用flag包读取命令行参数后,根据参数生成nsqd结构。

err := nsqd.LoadMetadata()
err = nsqd.PersistMetadata()

然后加载消息和持久化消息

nsqd.Main()

最后调用nsqd.Main()函数执行最重要的启动逻辑

相关文章

  • nsqd启动入口

    nsqd的启动代码入口在apps/nsqd/nsqd.go apps/nsqd/nsqd.go nsq使用svc包...

  • nsq源码(8) 生产和消费流程

    总览nsqd、nsqlookupd的启动过程,消息的生产到消费的过程 绑定注册 nsqd --lookupd-tc...

  • nsq简易使用

    启动nsqd 生产者代码tcp 消费者代码tcp

  • 搭建nsq环境

    安装 启动 启动nsqlookupd 启动nsqd 但是安装官网上这样操作在后面的步骤中遇到了问题,具体的稍后再讲...

  • NSQ源码(一)-nsqd启动和停止

    Nsqd 的启动借助了srv的包,srv定义的service接口包括以下方法 srv 在启动的时候依次调用这几个函...

  • nsq 消息队列设计

    消息传递设计 nsqlookupd:作用类似nsqd的注册中心,也复制给消费者提供nsqd地址 nsqd:管理to...

  • 计算机是如何启动的

    一.启动入口 任何启动程序或者系统都有启动入口。那么计算机的启动入口是什么呢 1.1 CS:IP CS寄存器: 代...

  • nsq源码(9) nsqlookupd与nsqd交互

    nsqlookupd与nsq交互 nsqd带参数启动 除了接收pub发布的topic,还可以通过硬盘备份的文件恢复...

  • 常用服务默认端口

    nsq 4150 nsqd-tcp-address4151 nsqd-http-address 4160 look...

  • 部署nsq

    本机ip 172.18.53.85 默认端口 4150 nsqd-tcp-address4151 nsqd-htt...

网友评论

      本文标题:nsqd启动入口

      本文链接:https://www.haomeiwen.com/subject/zmbitqtx.html