当生产者首次向主题发布消息时,我们的AWS MSK集群不会自动创建主题。这令人惊讶,因为根据https://kafka.apache.org/documentation/#brokerconfigs的默认行为应具有auto.create.topics.enable = true
。
我已尝试在代理上设置此配置,但由于配置为read-only
用于动态更新,因此无法执行。
$ kafka-configs --bootstrap-server $KAFKA_BROKER --entity-type brokers --entity-default --alter --add-config auto.create.topics.enable=true
Error while executing config command with args '--bootstrap-server $KAFKA_BROKER --entity-type brokers --entity-default --alter --add-config auto.create.topics.enable=true'
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.InvalidRequestException: Invalid config value for resource ConfigResource(type=BROKER, name=''): Cannot update these configs dynamically: Set(auto.create.topics.enable)
注意:我在输出中用$KAFKA_BROKER
替换了经纪人的IP
如何配置AWS MSK Kafka集群以启用主题的自动创建?
答案 0 :(得分:1)
尽管auto.create.topics.enable
通常默认为true
,但AWS MSK并非如此。根据今年2月在柏林的AWS Kafka峰会上发表的these slides,以下是Amazon MSK的默认配置参数:
offsets.topic.replication.factor 3
transaction.state.log.replication.factor 3
transaction.state.log.min.isr 2
auto.create.topics.enable False
default.replication.factor 3
min.insync.replicas 2
unclean.leader.election.enable True
auto.leader.rebalance.enable True
authorizer.class.name kafka.security.auth.SimpleAclAuthorizer
group.initial.rebalance.delay.ms 3000
log.retention.hours 168
请注意,即使是Kafka文档也提到suggested production configuration应该设置为false
。似乎该属性在MSK上也是不可配置的,因此我要么建议与AWS支持联系,要么直接使用它并在运行生产者之前创建主题。
答案 1 :(得分:1)
现在,您可以将customizing the configuration的参数设置为true
,但是由于建议的生产配置,默认情况下它将保留false
。