【发布时间】:2019-06-13 13:09:21
【问题描述】:
我想使用 kafka 作为事件存储来实现事件溯源模式。 我想让它尽可能简单。
想法:
我的应用包含客户列表。可以创建和删除客户。很简单。 当创建客户的请求进来时,我正在创建事件 CUSTOMER_CREATED,包括客户数据,并使用 KafkaProducer 将其存储在 kafka 主题中。使用事件 CUSTOMER_DELETED 删除客户时也是如此。
现在,当我想列出所有客户时,我必须重播到目前为止发生的所有事件,然后获取当前状态,即所有客户的列表。
我会创建一个临时客户列表,然后一一处理所有事件(创建客户、创建客户、删除客户、创建客户等)。 (使用 KafkaConsumer 消费这些事件)。最后我返回了临时列表。
我想让它尽可能简单,这只是为了让我了解事件溯源在实践中的工作原理。这是事件溯源吗?还有:以这种方式实现时如何创建快照?
【问题讨论】:
-
我在这里看到的一个很大的代码异味是您希望将数据保存在队列管理器中。队列并不意味着持久化数据。
-
是的,它们不是,但有可能,我想试试 :) 只是不确定我是否走在正确的轨道上。
-
@ItayMoav-Malimovka 但 Kafka 旨在将数据持久化一段可配置的时间(包括永远),所以......?
-
和mysql可以做队列,我可以用C写网页。
标签: apache-kafka event-sourcing