Apache kafka Kafka Streams复制因子未应用于状态存储更改日志主题
我们通过Spring云流集成使用Kafka流。我通过设置Apache kafka Kafka Streams复制因子未应用于状态存储更改日志主题,apache-kafka,apache-kafka-streams,spring-cloud-stream,Apache Kafka,Apache Kafka Streams,Spring Cloud Stream,我们通过Spring云流集成使用Kafka流。我通过设置 spring.cloud.stream.kafka.streams.binder.configuration.replication.factor=${REPL_FACTOR} 它适用于Kafka Streams内部使用的大多数重新分区/更改日志主题。但是,此设置似乎对通过Materialized\as(StoreSupplier)手动创建的状态存储更改日志主题没有影响。对于这些主题,我仍然可以看到复制因子设置为默认值1。使用Mater
spring.cloud.stream.kafka.streams.binder.configuration.replication.factor=${REPL_FACTOR}
它适用于Kafka Streams内部使用的大多数重新分区/更改日志主题。但是,此设置似乎对通过Materialized\as(StoreSupplier)
手动创建的状态存储更改日志主题没有影响。对于这些主题,我仍然可以看到复制因子设置为默认值1。使用Materialized#withlogginenabled(Map)
设置它也是不可能的,因为它只接受主题级配置(replication.factor
是Streams配置)。这是卡夫卡流中已知的错误吗?我什么也找不到。如果是这样,是否有一种变通方法来增加这些变更日志主题的复制系数
我们在代理端使用Kafka v2.3.1,在客户端使用2.5.0。从2.4版开始,
AdminClient
现在可以在NewTopic
中将复制因子设置为-1,这意味着在创建主题时应该使用default.replication.factor
然而,Kafka Streams目前似乎没有使用此功能;这是一个公开的问题
您可以使用设置内部主题的复制因子
StreamsConfig.REPLICATION_FACTOR_CONFIG)
流处理应用程序创建的更改日志主题和重新分区主题的复制因子
由于您正在通过活页夹配置进行设置,因此它应该按预期工作
spring.cloud.stream.kafka.streams.binder.configuration.replication.factor: 3
编辑
您使用的是哪个版本的SpringCloudStream?我刚刚用3.0.8进行了测试,它工作正常
spring.cloud.stream.kafka.streams.binder.configuration.replication.factor: 3
2020-10-15 12:03:55601错误[kafka stre]o.a.k.s.p.i.StreamThread:673-流线程[kafka-streams-inventory-processor-b8d07a5a-f3c4-476a-a265-119163d2acb7-StreamThread-1]在处理过程中遇到以下意外的kafka异常,这通常表示流内部错误:
org.apache.kafka.streams.errors.StreamsException:无法创建主题kafka streams清单处理器清单计数更改日志
原因:org.apache.kafka.common.errors.InvalidReplicationFactorException:复制因子:3大于可用代理:1
我不太熟悉streams,但是您可以在代理上更改默认值。不确定这是否会有帮助。说明中说此设置仅适用于“自动创建的主题”,因此我猜只有当设置为true时才适用(我们不是这样)。请参阅我的答案;我在JIRA中添加了一个注释来修复文档。另外,您使用的是什么版本?我刚刚用3.0.8对它进行了测试,它工作正常;请参阅对我的答案的编辑。