如何使用Kafka生成连续数字的消息?



上下文:发票系统,发送的发票必须是连续的数字。

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

所以,人们总是可以通过这个主题的内容来计算下一个发票的数量,对吗?(主题中的发票计数+ 1 =下一个数字)我们可以称这样的系统为事件源。

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

是我得到了一些错误的关于事件流还是它只是不可能与Kafka?

发票总是被分配号码并逐个发送,而不是并行发送。

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

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

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

相关内容

最新更新