Skip to content

liftbridge-io/nats-on-a-log

 
 

Repository files navigation

nats-on-a-log

Go Reference Coverage Go Version

This library provides a NATS transport for HashiCorp's Raft implementation.

Maintainers

This project is maintained by Basekick Labs, creators of Arc.

Requirements

  • Go 1.25.3+
  • hashicorp/raft v1.7.3+
  • NATS Server v2.10.0+

Installation

go get github.com/liftbridge-io/nats-on-a-log

Usage

import (
    natslog "github.com/liftbridge-io/nats-on-a-log"
    "github.com/nats-io/nats.go"
)

// Connect to NATS
nc, err := nats.Connect(nats.DefaultURL)
if err != nil {
    log.Fatal(err)
}

// Create NATS transport for Raft
transport, err := natslog.NewNATSTransport(
    "node-1",           // Node ID
    "raft.",            // Subject prefix
    nc,                 // NATS connection
    2*time.Second,      // Timeout
    os.Stderr,          // Log output
)
if err != nil {
    log.Fatal(err)
}
defer transport.Close()

// Use transport with Raft configuration
raftConfig := raft.DefaultConfig()
raftConfig.LocalID = "node-1"

// ... create Raft instance with transport

Features

  • NATS-based transport layer for Raft consensus
  • Supports Raft v1.7.3 features including pre-vote protocol
  • Connection pooling via NATS subscriptions
  • Configurable timeouts and logging

Test Coverage

Package Coverage
nats-on-a-log 84.7%

Run tests with coverage:

go test -coverprofile=coverage.out ./...
go tool cover -func=coverage.out

License

Apache License 2.0

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%