arm32v7/nats-streamingNATS Streaming Server 已被弃用。关键错误修复和安全修复将持续到 2023 年 6 月。需要持久化功能的 NATS 应用程序应使用 JetStream。
nats-streaming 是 NATS 消息系统的高性能流服务器,提供持久化消息传递、消息重放和订阅者容错等功能,适用于需要可靠消息传递的分布式系统。
repos/nats-streaming/ 目录注意:该镜像已不再提供官方支持的标签和架构。
NATS Streaming Server 暴露以下端口:
4222:客户端连接端口8222:HTTP管理端口,用于信息报告由于Windows Docker镜像构建限制,不带参数运行镜像时,将使用基于内存的存储,监听端口4222和管理端口8222。如需指定其他参数,需显式指定可执行文件名:
bash# 自定义端口示例 docker run -p 4223:4223 -p 8223:8223 nats-streaming nats-streaming-server -p 4223 -m 8223 # 指定入口点 docker run --entrypoint c:/nats-streaming-server/nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming
直接在命令行传递参数给NATS Streaming服务器:
bash# 自定义端口示例 docker run -p 4223:4223 -p 8223:8223 nats-streaming -p 4223 -m 8223 # 指定入口点 docker run --entrypoint /nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming
bash# 启动NATS Streaming服务器 docker run -d -p 4222:4222 -p 8222:8222 nats-streaming
输出信息(非后台运行时):
[1] 2022/10/11 14:57:50.404688 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 [1] 2022/10/11 14:57:50.404739 [INF] STREAM: ServerID: fbZJjwGYLBpNM5I8z23NSN [1] 2022/10/11 14:57:50.404741 [INF] STREAM: Go version: go1.19.2 [1] 2022/10/11 14:57:50.404743 [INF] STREAM: Git commit: [9e599667] [1] 2022/10/11 14:57:50.406004 [INF] Starting nats-server [1] 2022/10/11 14:57:50.406009 [INF] Version: 2.9.3 [1] 2022/10/11 14:57:50.406011 [INF] Git: [25e82d7] [1] 2022/10/11 14:57:50.406013 [INF] Name: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W [1] 2022/10/11 14:57:50.406015 [INF] ID: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W [1] 2022/10/11 14:57:50.406423 [INF] Listening for client connections on 0.0.0.0:4222 [1] 2022/10/11 14:57:50.406679 [INF] Server is ready [1] 2022/10/11 14:57:50.434935 [INF] STREAM: Recovering the state... [1] 2022/10/11 14:57:50.434945 [INF] STREAM: No recovered state [1] 2022/10/11 14:57:50.435271 [INF] STREAM: Message store is MEMORY [1] 2022/10/11 14:57:50.435303 [INF] STREAM: ---------- Store Limits ---------- [1] 2022/10/11 14:57:50.435306 [INF] STREAM: Channels: 100 * [1] 2022/10/11 14:57:50.435308 [INF] STREAM: --------- Channels Limits -------- [1] 2022/10/11 14:57:50.435310 [INF] STREAM: Subscriptions: 1000 * [1] 2022/10/11 14:57:50.435311 [INF] STREAM: Messages : *** * [1] 2022/10/11 14:57:50.435313 [INF] STREAM: Bytes : 976.56 MB * [1] 2022/10/11 14:57:50.435315 [INF] STREAM: Age : unlimited * [1] 2022/10/11 14:57:50.435316 [INF] STREAM: Inactivity : unlimited * [1] 2022/10/11 14:57:50.435318 [INF] STREAM: ---------------------------------- [1] 2022/10/11 14:57:50.435320 [INF] STREAM: Streaming Server is ready
使用文件存储代替内存存储:
bashdocker run -d -p 4222:4222 -p 8222:8222 \ -v $(pwd)/datastore:/datastore \ nats-streaming -store file -dir /datastore
bashdocker run -d --name=nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats
bashdocker run -d --link nats-main -p 4223:4222 -p 8223:8222 \ nats-streaming -store file -dir datastore -ns nats://nats-main:4222
NATS Streaming Server 支持以下主要命令行选项:
Streaming Server Options: -cid, --cluster_id <string> 集群ID (默认: test-cluster) -st, --store <string> 存储类型: MEMORY|FILE|SQL (默认: MEMORY) --dir <string> FILE存储类型的根目录 -mc, --max_channels <int> 最大通道数 (0表示无限制) -msu, --max_subs <int> 每个通道的最大订阅数 (0表示无限制) -mm, --max_msgs <int> 每个通道的最大消息数 (0表示无限制) -mb, --max_bytes <size> 每个通道的消息总大小限制 (0表示无限制) -ma, --max_age <duration> 消息最大存储时间 ("0s"表示无限制) -mi, --max_inactivity <duration> 通道无活动后垃圾回收时间 (0表示无限制) -ns, --nats_server <string> 连接外部NATS服务器URL (默认嵌入式) -sc, --stan_config <string> 流式服务器配置文件 -hbi, --hb_interval <duration> 服务器向客户端发送心跳的间隔 -hbt, --hb_timeout <duration> 服务器等待心跳响应的时间 -hbf, --hb_fail_count <int> 服务器关闭客户端连接前的失败心跳次数 --ft_group <string> FT组名称,2个或更多服务器共享相同数据存储 -p, --port <int> 客户端端口 (默认: 4222) -m, --http_port <int> HTTP管理端口
完整命令行选项列表可通过以下命令查看:
bashdocker run --rm nats-streaming --help
可以通过配置文件进行更详细的配置,使用-sc或--stan_config选项指定配置文件:
bashdocker run -d -p 4222:4222 -p 8222:8222 \ -v $(pwd)/stan.conf:/stan.conf \ nats-streaming -sc /stan.conf
配置文件详细说明请参考NATS Streaming Server配置文档。
以下是使用Docker Compose部署NATS Streaming Server与外部NATS服务器的示例:
yamlversion: '3' services: nats: image: nats ports: - "4222:4222" - "6222:6222" - "8222:8222" command: "-m 8222" restart: always nats-streaming: image: nats-streaming depends_on: - nats ports: - "4223:4222" - "8223:8222" command: "-store file -dir /datastore -ns nats://nats:4222 -cid my-cluster -m 8222" volumes: - ./datastore:/datastore restart: always
启动:
bashdocker-compose up -d
Docker的-p参数用于将容器端口映射到主机端口,这与NATS Streaming Server自身的-p参数不同。例如,要让NATS Streaming Server监听容器内的4444端口并映射到主机的5555端口:
bashdocker run -p 5555:4444 nats-streaming -p 4444
Streaming服务器本身与以前的版本向后兼容,但v0.15.0+版本嵌入了NATS Server 2.0,如果使用嵌入式NATS服务器并想路由到现有的v0.14.3-服务器,由于NATS Server路由协议的更改,将无法正常工作。但可以将v0.15.0+连接到现有的NATS集群,因此可以混合使用v0.15.0和v0.14.3-流式服务器。
该镜像已被官方弃用,不再接收更新和安全补丁。建议尽快迁移到JetStream。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务