我正在尝试从命令行生成启用了 SSL 的本地 Kafka 集群上的主题。
主题刚刚创建:
kafka-topics --zookeeper localhost:2181 --create --topic simple --replication-factor 1 --partitions 1
制作命令为:
kafka-avro-console-producer \
--broker-list localhost:9092 --topic simple \
--property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}' \
--property schema.registry.url=http://localhost:8080
打字:
{"f1": "Alyssa"}
错误:
{"f1": "Alyssa"}
Error when sending message to topic simple with key: null, value: 12 bytes with error:
(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback:52) org.apache.kafka.common.errors.TopicAuthorizationException:
Not authorized to access topics: [simple]
如何添加对此主题的访问权限?
ACL 的正确命令是什么(我在本地计算机上运行它)。
既然您有一个受 SSL 保护的集群,那么我建议创建一个配置文件,并使用此参数供 CLI 引用它。
--producer.config <String: config file> Producer config properties file. Note
that [producer-property] takes
precedence over this config
示例文件如下所示
bootstrap.servers=localhost:9092
# SSL related properties
security.protocol=SSL
ssl.keystore.location=/path/to/keystore-cert.jks
ssl.truststore.location=/path/to/truststore-cert.jks
ssl.key.password=xxxx
ssl.keystore.password=yyyy
ssl.truststore.password=zzzz
否则,您必须将这些逐一传递到
--property
选项
由于 SSL 属性,我也得到了同样的结果,请通过 SSL。
下面是 AVRO 消息的示例
./kafka-avro-console-producer --topic <topic_name> --broker-list <broker:port> --producer.config ssl.properties --property schema.registry.url=<schema_registru_url (for avro msg)> --property value.schema="$(< /path/to/avro_chema.avsc)" --property key.schema='{"type":"string"}' --property parse.key=true --property key.separator=":"