0

I accidentally noticed when I restart my NATS subscriber daemon, that all messages processed again, despite of fact they have been processed without errors.

publish.go:

err := s.conn.Publish(subject, data)

subscriber.go

durable := uuid.NewV4().String()
err = s.conn.QueueSubscribe(
    subject,
    durable,
    handler, // here I just log something
    stan.StartWithLastReceived(),
    stan.DurableName(durable),
)

In fact, NATS streaming server delivers all messages ever received each time I restart subscriber daemon.

James May
  • 1,371
  • 3
  • 20
  • 37

1 Answers1

0

I found out. This is because of durable := uuid.NewV4().String(), means each daemon restart we get new unique durable queue name, so it processed all messages again.

James May
  • 1,371
  • 3
  • 20
  • 37