chiachan
chiachan
Published on 2025-04-21 / 3 Visits
0

nsq通关秘籍(一) - 初识nsq

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"