![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
赵银龙
这个作者很懒,什么都没留下…
展开
-
nsq阅读概述
NSQ是Go语言编写的,开源的分布式消息队列中间件,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。最近又重新仔细学了一下Go语言,看完基础之后,想过段时间再来看Go语言的源码,但是又不想马上放下Go,于是从GitHub上找来nsq...原创 2019-03-26 13:06:30 · 163 阅读 · 0 评论 -
nsq源码之消费端消费流程
这篇博客我们先来看一下消费者消费的流程,下面就是使用一个消费者的简单demo// ConsumerHandler 消费者处理者type ConsumerHandler struct{}// HandleMessage 处理消息func (*ConsumerHandler) HandleMessage(msg *nsq.Message) error { fmt.Println(strin...原创 2019-03-26 14:36:25 · 2626 阅读 · 1 评论 -
nsq源码之生产者发布消息
研究完了消费者,那么我们就要看看生产者是如何工作的// Producer 生产者func Producer() { producer, err := nsq.NewProducer("127.0.0.1:4150", nsq.NewConfig()) if err != nil { fmt.Println("NewProducer", err) panic(err) } i ...原创 2019-03-26 15:27:25 · 644 阅读 · 0 评论 -
nsq之nsqd执行流程(包括订阅消息,发布消息等内容)
nsqd是就是我们平时所说的broker,接下来我们就来看一下它是怎么设计的,下面的Main方法就是nsqd启动的入口func (n *NSQD) Main() error { ctx := &context{n} exitCh := make(chan error) var once sync.Once exitFunc := func(err error) { once...原创 2019-03-26 20:43:37 · 2547 阅读 · 0 评论 -
nsq源码之nsqlookupd执行流程
在看nsqlookupd的时候一开始发现svn包里面的东西,不知道这是什么,就再网上查了一下nsqd为了优雅的关闭退出,使用了svc包来管理程序的运行。先不用管svc,svc.run之后会执行Init和Start函数。所以我们直接从它的start方法开始看func (p *program) Start() error { opts := nsqlookupd.NewOptions()...原创 2019-03-27 11:11:01 · 524 阅读 · 0 评论