使用 Java 代码的 Kafka ACL 授权问题

Kafka ACL authorization issue using Java code

我想像通过 kafka-acls.sh 一样通过 java 应用程序授予对 kafka 主题的访问权限。我只是想通过 java api.

在命令下 运行
kafka-acls.sh --add --allow-principals User:ctadmin --operation ALL --topic test --authorizer-properties zookeeper.connect=localhost:2181

我使用这些 Java 指令来做到这一点(topicName 具有测试值):

String[] cmdPArm = {"--add", "--allow-principals", "User:ctadmin", "--operation", "ALL","--topic", topicName ,"--authorizer-properties", "zookeeper.connect=localhost:2181"};
AclCommand.main(cmdPArm);

命令运行没有任何问题。 ACL 授权已设置,但我对该命令的工作方式有一点疑问。当我尝试获取我的主题的当前权限时,而不是此输出:

Current ACLs for resource `Topic:test`: 
    User:ctadmin has Allow permission for operations: All from hosts: localhost

我有这个:

Current ACLs for resource `Topic:test`: 
    user:ctadmin has Allow permission for operations: All from hosts: localhost

您可以看到 user:ctadminUser:ctadmin 之间的区别,它们没有为我的用户正确授予权限,我无权使用此主题。

我该如何解决这个问题?

问题已解决。这可能是由于缓存中有一些旧数据。我在另一台主机上做了一个新的 Kafka install/config,一切正常。