NSQ环境的搭建和简单的使用

NSQ安装说明

使用docker-compose运行

如果使用docker-compose的方式运行nsq,首先要保证Consumer要与nsq服务在一个docker网络环境中。
如果不能保证在一个网络环境中,则需要从源代码安装。
如果要存储nsq的消息,需要在启动nsqd的时候加上--data-path=/data命令,并在docker配置文件中将/data使用-v--volume命令挂载到本地。
使用docker-compose up -d后台运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
version: '3'

services:
nsqlookupd:
image: nsqio/nsq
networks:
- nsq-network
hostname: nsqlookupd
ports:
- "4161:4161"
- "4160:4160"
command: /nsqlookupd
nsqd:
image: nsqio/nsq
depends_on:
- nsqlookupd
hostname: nsqd
volumes:
- ./data:/data
networks:
- nsq-network
ports:
- "4151:4151"
- "4150:4150"
command: /nsqd --broadcast-address=nsqd --lookupd-tcp-address=nsqlookupd:4160 --data-path=/data
nsqadmin:
image: nsqio/nsq
depends_on:
- nsqlookupd
hostname: nsqadmin
ports:
- "4171:4171"
networks:
- nsq-network
command: /nsqadmin --lookupd-http-address=nsqlookupd:4161

networks:
nsq-network:
driver: bridge

运行的独立的docker

  1. 从dokcer hub拉取最新的镜像docker pull nsqio/nsq
  2. 运行nsqlookupd
    1
    docker run --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd
  3. 运行nsqd,需要手动挂载volume
    1
    2
    3
    4
    5
    docker run -v ./data:/data --name nsqd -p 4150:4150 -p 4151:4151 \
    nsqio/nsq /nsqd \
    --broadcast-address=127.0.0.1 \
    --lookupd-tcp-address=127.0.0.1:4160 \
    --data-path=/data
  4. 运行nsqadmin
    1
    2
    3
    docker run --name nsqadmin -p 4171:4171 \
    nsqio/nsq /nsqadmin \
    --lookupd-http-address=127.0.0.1:4161

从源代码安装

1
2
3
4
git clone https://github.com/nsqio/nsq $GOPATH/src/github.com/nsqio/nsq
cd $GOPATH/src/github.com/nsqio/nsq
dep ensure
go install

启动nsqlookupd

1
nsqlookupd

启动nsq

1
nsqd –lookupd-tcp-address=127.0.0.1:4160 --broadcast-address=127.0.0.1 --data-path=/data 

启动nsqadmin

1
nsqadmin --lookupd-http-address=127.0.0.1:4161