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