如何在AWS MSK集群上将auto.create.topics.enable设置为默认配置

时间:2019-04-26 09:56:33

标签: amazon-web-services apache-kafka

当生产者首次向主题发布消息时,我们的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集群以启用主题的自动创建?

2 个答案:

答案 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