go-micro.dev/v5@v5.12.0/internal/website/docs/examples/pubsub-nats.md (about)

     1  ---
     2  layout: default
     3  ---
     4  
     5  # Pub/Sub with NATS Broker
     6  
     7  Use the NATS broker for pub/sub.
     8  
     9  ## In code
    10  
    11  ```go
    12  package main
    13  
    14  import (
    15      "log"
    16      "go-micro.dev/v5"
    17      "go-micro.dev/v5/broker"
    18      bnats "go-micro.dev/v5/broker/nats"
    19  )
    20  
    21  func main() {
    22      b := bnats.NewNatsBroker()
    23      svc := micro.NewService(micro.Broker(b))
    24      svc.Init()
    25  
    26      // subscribe
    27      _, _ = broker.Subscribe("events", func(e broker.Event) error {
    28          log.Printf("received: %s", string(e.Message().Body))
    29          return nil
    30      })
    31  
    32      // publish
    33      _ = broker.Publish("events", &broker.Message{Body: []byte("hello")})
    34  
    35      svc.Run()
    36  }
    37  ```
    38  
    39  ## Via environment
    40  
    41  Run your service with env vars set:
    42  
    43  ```bash
    44  MICRO_BROKER=nats MICRO_BROKER_ADDRESS=nats://127.0.0.1:4222 go run main.go
    45  ```