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

chazex · · 1502 次点击
程序退出前 close所有channel 读取channel的函数 等待消费完毕再退出 可以埋一个sync.WaitGroup到每个消费函数里,main里做wait即可
#5
更多评论
你这个和消费生产者关系不大 你这个是一个最简化的消息队列 我们可以参考一下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