Я случайно заметил при перезапуске моего демона подписчика NATS, что все сообщения были обработаны снова, несмотря на то, что они были обработаны без ошибок.
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),
)
Фактически, потоковый сервер NATS доставляет все полученные сообщения каждый раз, когда я перезапускаю демон подписчика.