Files
micro--go-micro/internal/website/docs/examples/pubsub-nats.md
T
wehub-resource-sync e071084ebe
govulncheck / govulncheck (push) Waiting to run
Harness (E2E) / Harnesses (mock LLM) (push) Waiting to run
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Run Tests / Unit Tests (push) Waiting to run
Run Tests / Etcd Integration Tests (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:40:33 +08:00

780 B

layout
layout
default

Pub/Sub with NATS Broker

Use the NATS broker for pub/sub.

In code

package main

import (
    "log"
    "go-micro.dev/v6"
    "go-micro.dev/v6/broker"
    bnats "go-micro.dev/v6/broker/nats"
)

func main() {
    b := bnats.NewNatsBroker()
    svc := micro.NewService("nats-pubsub", micro.Broker(b))
    svc.Init()

    // subscribe
    _, _ = broker.Subscribe("events", func(e broker.Event) error {
        log.Printf("received: %s", string(e.Message().Body))
        return nil
    })

    // publish
    _ = broker.Publish("events", &broker.Message{Body: []byte("hello")})

    svc.Run()
}

Via environment

Run your service with env vars set:

MICRO_BROKER=nats MICRO_BROKER_ADDRESS=nats://127.0.0.1:4222 go run main.go