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

chazex · · 1615 次点击
你的数据在内存中,重启肯定丢,这些生产者消费者、或者channel是没有任何关系的。要想不丢就必须放在外面,无论是数据库还是消息队列或者其他什么的
#4
更多评论
你这个和消费生产者关系不大 你这个是一个最简化的消息队列 我们可以参考一下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