当我重新启动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流服务器都会发送曾经收到的所有消息。
答案 0 :(得分:0)
我发现了。这是因为持久的:= uuid.NewV4()。String(),这意味着每次重新启动守护程序都会获得新的唯一持久队列名称,因此它将再次处理所有消息。