NATS 服务器支持以 Windows 服务 的形式运行。事实上,这是在 Windows 上运行 NATS 的推荐方式。目前尚无安装程序;用户应使用 sc.exe 来安装服务:
上述命令将创建并启动一个名为 nats-server 的服务。请注意,在创建服务时就应提供 nats-server 的标志。这允许通过为每个已安装的 NATS 服务实例使用一对一的服务实例,在单个 Windows 服务器上运行多个 NATS 服务器配置。一旦服务运行,可以使用 sc.exe 或 nats-server.exe --signal 进行控制:
上述命令默认会控制名为 nats-server 的服务。如果服务名称不同,可以指定:
有关信号的完整列表,请参阅 进程信号。
在上述示例中,默认用户将是 System,该用户具有本地管理员权限,并对磁盘上的几乎所有文件都有写入权限。
如果您更改了服务用户(例如改为权限更受限的 NetworkService),请确保已设置相应的权限。服务器至少需要对配置文件具有读取权限,以及在使用 Jetstream 时,对 JetStream 存储目录具有写入权限。
当未配置日志文件时,Nats-server 将向默认控制台写入日志条目。并非所有用户都被允许输出日志到控制台(例如,NetworkService 用户不允许)。
{% hint style="info" %} 为方便调试,建议运行带有显式日志文件的 NATS 服务,并仔细检查已配置用户的写入权限。 {% endhint %}
NATS_STARTUP_DELAYWindows 服务系统需要与作为 Windows 服务 运行的程序进行通信。程序向服务系统发的一个重要信号是初始的“就绪”信号,即程序通知 Windows 它正在按预期运行。
默认情况下,nats-server 给自己最多 10 秒来发送此信号。如果服务器在此时间之后仍未准备好,服务器将发出启动失败的信号。此延迟可以通过将环境变量 NATS_STARTUP_DELAY 设置为合适的持续时间(例如,“20s”表示 20 秒,“1m”表示 1 分钟)来调整。
请注意
NATS_STARTUP_DELAY 对 NATS 服务 可用,建议将其设置为 系统变量。NATS_STARTUP_DELAY=30s 将使 NATS 服务器等待最多 30 秒,但只要服务器准备好接受连接,就会报告服务为 RUNNING。要测试延长的启动超时时间,您可能需要减慢服务器启动速度,例如通过使用非常大的流(数十 GB)或通过将 Jetstream 存储放置在缓慢的网络设备上。在某些情况下,NATS 从命令行正确运行,但恢复 JetStream 流状态和连接到其集群对等节点所需的时间超过 10 秒时,可能需要进行此调整。