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

chazex · · 1595 次点击
我只是让你参考架构 这个和分布式没关系啊。 你需要的是消息的持久化,要持久化就是要落地,落地最简单的就是都存到一个key-value database里。 然后做了持久化还要考虑失败(重启服务)时的策略,保证一次/至少一次/精确一次。
#8
更多评论
你这个和消费生产者关系不大 你这个是一个最简化的消息队列 我们可以参考一下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