我想通过java应用程序授予对kafka主题的访问权限,就像我们通过kafka-acls.sh一样。我只想通过java api运行命令。
kafka-acls.sh --add --allow-principals User:ctadmin --operation ALL --topic test --authorizer-properties zookeeper.connect=localhost:2181
我使用这些Java指令来执行此操作(topicName将test作为值):
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:ctadmin
和User:ctadmin
之间的区别,它们没有为我的用户正确授予权限,而且我没有被授权使用此主题。
我该如何解决这个问题?
答案 0 :(得分:1)
问题解决了。这可能是由于缓存中的一些旧数据。我在另一台主机上做了一个新的Kafka安装/配置,一切正常。