使用kafka状态存储更改日志主题来共享状态

时间:2018-04-04 12:00:16

标签: apache-kafka apache-kafka-streams event-sourcing

我正在尝试在电子商务领域进行事件采购的小型POC。所以我有订单服务,客户联系服务和送货服务。现在出于后勤原因,交付人员应该可以获得一些客户联系信息,以便他们可以在不在家的情况下给客户打电话等。显然,客户可以更新他们的联系信息,理想情况下交付应该显示最新的联系信息。我使用kafka作为消息传递框架和状态存储。 当我通过读取与聚合状态更改(例如客户联系信息更改)相关的事件来创建状态存储并将其应用于聚合时,状态存储将以更改日志主题(例如,联系服务 - 客户接触的changelog)。现在,如果我需要其他服务(例如传递服务)中的某些数据,我可以使用相同的更改日志主题来创建该服务本地的另一个状态存储吗?在可获得的文献中,这种类型的主题被称为"内部"因此,除了为原始服务的实例重新构建状态存储之外,我们似乎不应该使用此主题。那么我们应该将状态存储的更新重新发布到一个新主题,以便其他服务加入这些数据?还是有另一种方法来解决这个用例?

1 个答案:

答案 0 :(得分:1)

它被称为内部主题,因为它由Kafka Streams库管理。这意味着主题名称可能会更改,因此可能无法保存以使用主题。但是没有什么能阻止你使用这个主题。

为了不搞乱状态,你不应该来讨论这个话题。从中读取,是“概念上的拯救”。

很难提供建议,您应该自己决定阅读主题或手动创建主题并再次写入相同的数据。