为下游订阅优化 State Store 主题
Optimizing State Store topics for downstream subscription
我有一个使用 Streams 1.1.1 的微服务(计划很快升级到 2.1),它将聚合记录发布到一个压缩主题 ("customer-events"),供下游微服务作为其输入 KTable 使用.
这最终会创建两个具有相同信息的精确副本的主题。 “客户事件”是其中之一;另一个是在幕后创建的用于支持状态存储的内部。两者具有完全相同的键和值。
有没有办法--
A) 优化内部主题命名约定,以便我们可以简单地使用状态存储支持更改日志主题作为我们微服务的输入主题,而不用担心版本控制会破坏命名约定?
或
B) 禁用状态存储的日志记录,如果必须重新构建状态存储,则强制它使用 "customer-events" 主题作为其输入。 (首选)
你唯一能做的就是不通过 to()
将数据写入接收器主题,让下游消费者直接从无论如何创建的更新日志主题中读取。如果您通过 Materialized.as(...)
参数命名 KTable
,变更日志主题的名称将使用它作为变更日志主题名称的组成部分(不可能指定变更日志主题的全名)。命名 KTable
可提供兼容性,因此如果您升级应用程序,名称不会更改。
重用输出主题并省略更改日志主题是我们计划在未来添加到 Kafka Streams 的优化(参见 https://issues.apache.org/jira/browse/KAFKA-6035)。
如果您禁用日志记录,您将使用容错保证,因此,这似乎不是一个选项。
我有一个使用 Streams 1.1.1 的微服务(计划很快升级到 2.1),它将聚合记录发布到一个压缩主题 ("customer-events"),供下游微服务作为其输入 KTable 使用.
这最终会创建两个具有相同信息的精确副本的主题。 “客户事件”是其中之一;另一个是在幕后创建的用于支持状态存储的内部。两者具有完全相同的键和值。
有没有办法--
A) 优化内部主题命名约定,以便我们可以简单地使用状态存储支持更改日志主题作为我们微服务的输入主题,而不用担心版本控制会破坏命名约定?
或
B) 禁用状态存储的日志记录,如果必须重新构建状态存储,则强制它使用 "customer-events" 主题作为其输入。 (首选)
你唯一能做的就是不通过 to()
将数据写入接收器主题,让下游消费者直接从无论如何创建的更新日志主题中读取。如果您通过 Materialized.as(...)
参数命名 KTable
,变更日志主题的名称将使用它作为变更日志主题名称的组成部分(不可能指定变更日志主题的全名)。命名 KTable
可提供兼容性,因此如果您升级应用程序,名称不会更改。
重用输出主题并省略更改日志主题是我们计划在未来添加到 Kafka Streams 的优化(参见 https://issues.apache.org/jira/browse/KAFKA-6035)。
如果您禁用日志记录,您将使用容错保证,因此,这似乎不是一个选项。