/nats-server

A Go package for running an embedded NATS server.

Primary LanguageGoMIT LicenseMIT

release go report card license build powered by conventional commits gitHub commit activity

NATS Server

A Go package for running an embedded NATS server.

Usage

package main
import (
"log/slog"
"os"
"os/signal"
"syscall"
"time"
natsserver "github.com/nats-io/nats-server/v2/server"
"github.com/osapi-io/nats-server/pkg/server"
)
func main() {
debug := true
trace := debug
logger := slog.Default()
opts := &server.Options{
Options: &natsserver.Options{
JetStream: true,
Debug: debug,
Trace: trace,
StoreDir: ".nats/jetstream/",
NoSigs: true,
NoLog: false,
},
ReadyTimeout: 5 * time.Second,
}
s := server.New(logger, opts)
err := s.Start()
if err != nil {
logger.Error("failed to start server", "error", err)
os.Exit(1)
}
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt, syscall.SIGTERM)
<-quit
s.Stop()
}

See the examples section for additional use cases.

Testing

Enable Remote Taskfile feature.

export TASK_X_REMOTE_TASKFILES=1

Install dependencies:

$ task go:deps

To execute tests:

$ task go:test

Auto format code:

$ task go:fmt

List helpful targets:

$ task

License

The MIT License.