go-micro.dev/v5@v5.12.0/events/natsjs/README.md (about)

     1  # NATS JetStream
     2  
     3  This plugin uses NATS with JetStream to send and receive events.
     4  
     5  ## Create a stream
     6  
     7  ```go
     8  ev, err := natsjs.NewStream(
     9    natsjs.Address("nats://10.0.1.46:4222"),
    10    natsjs.MaxAge(24*160*time.Minute),
    11  )
    12  ```
    13  
    14  ## Consume a stream
    15  
    16  ```go
    17  ee, err := events.Consume("test",
    18    events.WithAutoAck(false, time.Second*30),
    19    events.WithGroup("testgroup"),
    20  )
    21  if err != nil {
    22    panic(err)
    23  }
    24  go func() {
    25    for {
    26      msg := <-ee
    27      // Process the message
    28      logger.Info("Received message:", string(msg.Payload))
    29      err := msg.Ack()
    30      if err != nil {
    31        logger.Error("Error acknowledging message:", err)
    32      } else {
    33        logger.Info("Message acknowledged")
    34      }
    35    }
    36  }()
    37  
    38  ```
    39  
    40  ## Publish an Event to the stream
    41  
    42  ```go
    43  err = ev.Publish("test", []byte("hello world"))
    44  if err != nil {
    45    panic(err)
    46  }
    47  ```
    48