nsq通关秘籍 - 初识nsq
NSQ 简介
NSQ 是一个实时分布式消息平台,具有高可用、高性能、易部署、无单点依赖等特点。 适用于解耦系统中的模块通信,如异步任务、事件分发、数据流处理等。
核心组件
1. nsqd
- 负责接收、排队、投递消息
- 每条消息只能被一个 Channel 中的一个消费者消费
2. nsqlookupd
- 提供服务发现,帮助 Producer 和 Consumer 找到 nsqd
- 不参与消息传递,可水平扩展
3. nsqadmin
- 提供 Web UI 查看 topic、channel、consumer 状态
核心概念
概念名 | 说明 |
---|---|
Topic | 类似一个逻辑消息分类,比如“test_topic” |
Channel | Topic 的消费组,多个 channel 各自独立消费,不共享消息 |
Message | 具体的一条数据,格式不限(一般用 JSON) |
Producer | 负责发消息到某个 topic |
Consumer | 订阅某个 topic/channel 的消息并处理 |
docker-compose快速部署单机环境
docker-compose.yml
version: '3'
services:
nsqlookupd:
image: nsqio/nsq
command: /nsqlookupd
ports:
- "4160:4160" # TCP
- "4161:4161" # HTTP
nsqd:
image: nsqio/nsq
depends_on:
- nsqlookupd
command: >
/nsqd
--broadcast-address=nsqd
--lookupd-tcp-address=nsqlookupd:4160
ports:
- "4150:4150" # TCP (publish)
- "4151:4151" # HTTP (admin)
environment:
- TZ=Asia/Shanghai
nsqadmin:
image: nsqio/nsq
depends_on:
- nsqlookupd
- nsqd
command: >
/nsqadmin
--lookupd-http-address=nsqlookupd:4161
ports:
- "4171:4171"
常用命令
# 查看 topic 列表
curl http://127.0.0.1:4161/topics
# 查看某个 topic 的 channel
curl http://127.0.0.1:4161/topic?topic=test_topic
# 清除无用 channel
curl -X DELETE "http://127.0.0.1:4151/channel/delete?topic=test_topic&channel=ch1"