微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Kafka生成连续编号的消息?

如何解决如何使用Kafka生成连续编号的消息?

上下文:发票系统,发送的发票必须有连续编号。

每张发票都有一个唯一的发票编号,为简单起见,我们假设它们是 I1I2I3 等等。因此,系统中的第一张发票的编号为 I1,并且每下一张发票都会递增。然后,每张发票都在 Kafka 主题生成

所以,总能通过这个话题的内容来算出下一张发票的数量吧? (主题中的发票数 + 1 = 下一个数字)我们可以调用这样的系统事件源。

但是你是如何做到这一点的呢?对我来说,这似乎是一个循环的数据流:为了生产到主题中,我首先需要确保我在另一个地方消费了相同的整个主题

我对事件流有什么误解,还是 Kafka 不可能?

发票总是被分配编号并一张一张地发送,而不是并行发送。

解决方法

生产者不应该关心已经(或没有)消耗了什么。

您似乎只需要确保生产者有 acks=1,这意味着代理接受了消息,并且您有一个分区来确保完整的排序。

如果您需要确保跨分布式线程/进程以原子方式增加值,那么您需要将这个数字保存在其他地方,而不是依赖于主题的状态(例如,Zookeeper 锁)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。