fix: use random port for embedded NATS to avoid binding conflicts

Port 0 is treated as default (4222) by NATS server, causing hangs when
that port is unavailable. Port -1 (RANDOM_PORT) binds to an OS-assigned
free port, which is correct for an embedded server.
This commit is contained in:
Ryan Hamamura
2026-02-19 12:24:37 -10:00
parent 58ad9a2699
commit 42b21348cb

10
nats.go
View File

@@ -9,6 +9,7 @@ import (
"time" "time"
"github.com/delaneyj/toolbelt/embeddednats" "github.com/delaneyj/toolbelt/embeddednats"
natsserver "github.com/nats-io/nats-server/v2/server"
"github.com/nats-io/nats.go" "github.com/nats-io/nats.go"
) )
@@ -50,7 +51,14 @@ func startDefaultNATS() (dn *defaultNATS, err error) {
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
ns, err := embeddednats.New(ctx, embeddednats.WithDirectory(dataDir)) ns, err := embeddednats.New(ctx,
embeddednats.WithDirectory(dataDir),
embeddednats.WithNATSServerOptions(&natsserver.Options{
JetStream: true,
StoreDir: dataDir,
Port: -1,
}),
)
if err != nil { if err != nil {
cancel() cancel()
os.RemoveAll(dataDir) os.RemoveAll(dataDir)