NSQ 源码分析之NSQD--Topic

本文详细分析了NSQ中Topic的实现,包括`topic.go`的主要功能,如NewTopic函数的初始化过程,messagePump函数的消息处理,PutMessage/PutMessages的内存与磁盘队列操作。此外,还介绍了Topic的删除、暂停、恢复和持久化等关键操作,为理解MQ的Topic提供了深入见解。
摘要由CSDN通过智能技术生成

今天主要讲的是NSQ topic 的代码实现,topic作为MQ的重要概念,了解它的实现,对我们理解其他MQ的topic,有很多的益处。

主要代码文件:

1.nsqd/topic.go

topic结构体

type Topic struct {
	// 64bit atomic vars need to be first for proper alignment on 32bit platforms
	messageCount uint64 //消息累计条数  后期查看每个topic的状态时有用
	messageBytes uint64 //消息累计字节数 后期查看每个topic的状态时有用

	sync.RWMutex

	name              string  //主题名称
	channelMap        map[string]*Channel  //主题拥有的channel
	backend           BackendQueue //磁盘队列
	memoryMsgChan     chan *Message //内存队列
	startChan         chan int  //topic 开始接收消息的chan
	exitChan          chan int //topic 结束的chann
	channelUpdateChan chan int //channel 更新通知(停止,删除,新增)
	waitGroup         util.WaitGroupWrapper
	exitFlag          int32
	idFactory         *guidFactory  //id 生成器

	ephemeral      bool
	deleteCallback func(*Topic) //topic 删除的 回调函数
	deleter        sync.Once

	paused    int32
	pauseChan chan int

	ctx *context //包装了nsqd的context
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值