1

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

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

所以,总能只根据这个话题的内容来计算下一张发票的数量吧?(主题中的发票数量 + 1 = 下一个数字)我们可以将这样的系统称为事件源。

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

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

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

4

1 回答 1

0

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

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

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

于 2021-02-04T23:19:41.603 回答