golang 生产消费模式,如何保证不丢数据呢?

chazex · 2021-02-24 20:46:53 · 1734 次点击

也有过这类的疑惑,暂时无解

#3
更多评论

你这个和消费生产者关系不大

你这个是一个最简化的消息队列

我们可以参考一下go实现的消息队列

https://nats.io/

nats是一个 go实现的消息队列

他最基本的是nats-server,也就是基于话题的订阅/发布功能。

然后,他还提供了一个 nats-streaming

https://docs.nats.io/nats-streaming-concepts/intro

通过这个功能实现了消息的持久化,消费模式等功能

#1

然后是自己的最小化实现。

我自己做过一个通知队列,简单来说,需要实现4快

1.编号,给每个消息编一个号。 2.持久化,随便找一个key-value db就可以,比如leveldb 3.核销,操作成功后根据消息编号删除消息记录 4.重试,这个根据自己的策略来做就行

#2