Like Share Discussion Bookmark Smile

J.J. Huang   2023-06-06   Docker Docker Compose   瀏覽次數:次   DMCA.com Protection Status

Docker Compose - NSQ

前言

我想有開發分布式系統的工程師們,對「Message queue」、「MQ」、「訊息佇列」、「訊息中間件」、「分佈式訊息隊列」…這些詞應該都不陌生吧?!

不知道?可以參考Wiki-訊息佇列

至於Message queue能用來幹嘛?之後有時間再來寫篇文章介紹。
可以先看看官方提供的特性和保證

Docker Image

此處直接使用Docker hub上的nsqio/nsq
官方網站也有提供較完整的說明,可以參考NSQ - DOCKER

Docker Compose

官方也有提供一個Docker compose範本,但是我這邊有多加一個參數,所以有些微不一樣。

  • docker-compose.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    version: '3'
    services:
    nsqlookupd:
    image: nsqio/nsq
    command: /nsqlookupd
    ports:
    - "4160:4160"
    - "4161:4161"
    nsqd:
    image: nsqio/nsq
    command: /nsqd --lookupd-tcp-address=nsqlookupd:4160 -broadcast-address=192.168.0.1
    depends_on:
    - nsqlookupd
    ports:
    - "4150:4150"
    - "4151:4151"
    nsqadmin:
    image: nsqio/nsq
    command: /nsqadmin --lookupd-http-address=nsqlookupd:4161
    depends_on:
    - nsqlookupd
    ports:
    - "4171:4171"
    説明:
    • 版本定義為3
    • 定義services名稱為nsqlookupd
    • 使用nsqio/nsq映像。
    • 默認命令。

      註:-broadcast-address如果需要外網訪問,必須設置這個參數為對外ip地址。

    • 暴露端口41604160(格式為HOST:CONTAINER)。
    • 定義services名稱為nsqd
    • 使用nsqio/nsq映像。
    • 默認命令。
    • 設置啟動順序。(需要在nsqlookupd啟動後)
    • 暴露端口8080(格式為HOST:CONTAINER)。
    • 暴露端口41504151(格式為HOST:CONTAINER)。
    • 定義services名稱為nsqadmin
    • 使用nsqio/nsq映像。
    • 設置啟動順序。(需要在nsqlookupd啟動後)
    • 暴露端口4171(格式為HOST:CONTAINER)。

      註:以上命名都是由NSQ Docker compose定義,請自行查閱。

Run & Test

建立Topic參考

1
$ curl -X POST http://127.0.0.1:4151/topic/create?topic=public

進入nsq-nsqadmin-1容器:

1
$ docker exec -it nsq-nsqadmin-1 sh

nsq-nsqadmin-1容器內使用nsq_to_file工具做簡單的消費者:

1
$ nsq_to_file --topic=public --channel=t1 --output-dir=/data/ --nsqd-tcp-address=nsq-nsqd-1:4150

發送Message參考

1
$ curl -d "Hello" http://127.0.0.1:4151/pub?topic=public

回到nsq-nsqadmin-1容器,檢視消費的log內容:

1
$ cat ./public.27d746892aac.2023-06-06_02.log

註:檔案名稱可能不一樣。

Other Docker Compose List

如需要找尋其他的 Docker Compose ,可以參考Docker Compose - 簡介的分享目錄。


註:以上參考了
Docker
NSQ - QUICK START
SSL的工作学习问题整理 - NSQ的消息订阅发布测试