使用kafka state store change log topic共享状态
Using kafka state store change log topic to share state
我正在尝试对电子商务领域的事件溯源做一个小的 POC。所以我有一个订单服务,一个客户联系服务和一个送货服务。现在出于后勤原因,送货员应该可以使用一些客户联系信息,以便他们可以在客户不在家的情况下给客户打电话等。显然,客户可以更新他们的联系信息,并且理想情况下,送货应该显示最新的联系信息.我使用 kafka 作为消息传递框架和状态存储。
当我通过读取与聚合状态更改相关的事件(例如客户联系信息更改)创建状态存储并将它们应用于聚合时,状态存储支持更改日志主题(例如 contact-service-customer-contact-变更日志)。现在,如果我需要其他服务(例如送货服务)中的一些数据,我可以使用相同的更改日志主题来创建该服务本地的另一个状态存储吗?在可用的文献中,这种类型的主题被称为 "internal",因此除了为原始服务的实例重建状态存储之外,我们似乎不应该将此主题用于任何其他事情。所以我们应该将状态存储的更新重新发布到一个新主题,以便其他服务加入这些数据?还是有另一种方法来解决这个用例?
之所以称为内部主题,是因为它由 Kafka Streams 库管理。这意味着主题名称可能会更改,因此可能无法保存以使用该主题。不过,没有什么能阻止你消费这个话题。
为了不扰乱状态,您永远不应该 写 这个主题。从中读取,是"conceptually save".
很难给出建议,您应该自己决定阅读主题或手动创建主题并再次写入相同的数据。
我正在尝试对电子商务领域的事件溯源做一个小的 POC。所以我有一个订单服务,一个客户联系服务和一个送货服务。现在出于后勤原因,送货员应该可以使用一些客户联系信息,以便他们可以在客户不在家的情况下给客户打电话等。显然,客户可以更新他们的联系信息,并且理想情况下,送货应该显示最新的联系信息.我使用 kafka 作为消息传递框架和状态存储。 当我通过读取与聚合状态更改相关的事件(例如客户联系信息更改)创建状态存储并将它们应用于聚合时,状态存储支持更改日志主题(例如 contact-service-customer-contact-变更日志)。现在,如果我需要其他服务(例如送货服务)中的一些数据,我可以使用相同的更改日志主题来创建该服务本地的另一个状态存储吗?在可用的文献中,这种类型的主题被称为 "internal",因此除了为原始服务的实例重建状态存储之外,我们似乎不应该将此主题用于任何其他事情。所以我们应该将状态存储的更新重新发布到一个新主题,以便其他服务加入这些数据?还是有另一种方法来解决这个用例?
之所以称为内部主题,是因为它由 Kafka Streams 库管理。这意味着主题名称可能会更改,因此可能无法保存以使用该主题。不过,没有什么能阻止你消费这个话题。
为了不扰乱状态,您永远不应该 写 这个主题。从中读取,是"conceptually save".
很难给出建议,您应该自己决定阅读主题或手动创建主题并再次写入相同的数据。