java Kafka“未定义serviceName”问题

js5cn81o  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(214)

我有同样的问题No serviceName defined in either JAAS or Kafka config (not Kerberos),但我无法解决它。
我试图创建org.apache.Kafka.clients.admin.AdminClient在应用程序启动时使用属性:

public void init(@Observes @Priority(Interceptor.Priority.APPLICATION) StartupEvent event) {
    log.info("Kafka startup event started!");
    
    Map<String, Object> properties = Map.of(
        "sasl.jaas.config", "org.apache.kafka.common.security.scram.ScramLoginModule required username=user password=user;",
        AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "...",
        "sasl.jaas.mechanism", "SCRAM-SHA-512",
        "security.protocol", "SASL_PLAINTEXT"
    );
    int partitions = 1;
    short replicationFactor = 1;

    NewTopic topic = new NewTopic("test-topic-name", partitions, replicationFactor);

    try (AdminClient adminClient = AdminClient.create(properties)) {
        CreateTopicsResult result = adminClient.createTopics(
            Collections.singleton(topic)
        );
        KafkaFuture<Void> future = result.values().get(topic);

        future.get();
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }
}

并且还具有来自application.yaml的属性:

kafka:
 auto:
    create:
      topics:
        enable: false
  bootstrap:
    servers: {servers}
  sasl:
    jaas:
      config: org.apache.kafka.common.security.scram.ScramLoginModule required username=user password=user;
    mechanism: SCRAM-SHA-512
  security:
    protocol: SASL_PLAINTEXT

如果我只使用appl.yaml中设置的属性-这没问题,但是当我尝试使用手动创建主题来澄清MAP中的属性时-出现了问题。

org.apache.kafka.common.security.scram.ScramLoginModule required username=user password=user serviceName=Kafka;

但是我还是有一个问题,就是授权问题。如何在启动时创建主题?不要使用LAZY初始化。这是我的主要目标。
使用** quarkus **,ApacheKafka
https://www.baeldung.com/kafka-topic-creation

iszxjhcz

iszxjhcz1#

通过将键"sasl.jaas.mechanism"重构为"sasl.mechanism",它应该可以再次工作。

相关问题