0

当我重新启动我的 NATS 订阅者守护程序时,我意外地注意到,所有消息都再次处理,尽管事实上它们已被正确处理。

发布.go:

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

订阅者.go

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

事实上,每次我重新启动订阅者守护进程时,NATS 流媒体服务器都会传递曾经收到的所有消息。

4

1 回答 1

0

我发现。这是因为durable := uuid.NewV4().String(),意味着每次守护进程重新启动我们都会获得新的唯一持久队列名称,因此它会再次处理所有消息。

于 2019-04-02T09:13:43.790 回答