我有同样的问题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
1条答案
按热度按时间iszxjhcz1#
通过将键
"sasl.jaas.mechanism"
重构为"sasl.mechanism"
,它应该可以再次工作。