總覽nsqd击孩、nsqlookupd的啟動(dòng)過程,消息的生產(chǎn)到消費(fèi)的過程
綁定注冊
nsqd --lookupd-tcp-address=127.0.0.1:4160
- 當(dāng)nsqd帶參數(shù)啟動(dòng)時(shí),除了會(huì)處理客戶端的請求捐川,還會(huì)啟動(dòng)一個(gè)線程去注冊nsqlookupd
graph LR
nsqd--注冊-->nsqlookupd
func (n *NSQD) Main() {
// 超時(shí)消息檢索和處理任務(wù)
n.waitGroup.Wrap(n.queueScanLoop)
// 根據(jù)參數(shù)選擇注冊中心nsqlookupd
n.waitGroup.Wrap(n.lookupLoop)
if n.getOpts().StatsdAddress != "" {
n.waitGroup.Wrap(n.statsdLoop)
}
}
發(fā)布生產(chǎn)和消費(fèi)訂閱
- 通過nsqd的http接口生產(chǎn)消息:
curl -d 'hello world 1' 'http://127.0.0.1:4151/pub?topic=test'
- 啟動(dòng)消費(fèi)者客戶端:
nsq_to_file --topic=test --output-dir=/tmp --channel=chan --lookupd-http-address=127.0.0.1:4161
- 生產(chǎn)消費(fèi)流程圖:
graph LR
nsq_to_file --請求-->nsqlookupd
nsqlookupd --返回分配的nsqd生產(chǎn)者信息-->nsq_to_file
graph LR
生產(chǎn)者--生產(chǎn)發(fā)布消息-->nsqd
nsqd --持續(xù)為消息尋找subchan--> nsq_to_file
nsq_to_file --連接并消費(fèi)訂閱指定topic-->nsqd