首页 > 解决方案 > Kafka 集成测试,无法设置启用 SASL 的机制

问题描述

我正在使用 SASL 进行集成测试TestContainers并尝试启用 SASL,以便我可以保留相同的配置文件而不是重复代码。

  public static KafkaContainer kafka =
      new KafkaContainer(DockerImageName.parse(KAFKA_TEST_IMAGE))
              .withNetwork(Network.newNetwork())
              .withEnv("KAFKA_AUTO_CREATE_TOPICS_ENABLE", "false")
              .withEnv("KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND", "true")
              .withEnv("KAFKA_SUPER_USERS", "User:OnlySuperUser")
//              .withEnv("KAFKA_CFG_SASL_ENABLED_MECHANISMS", "PLAIN")
//              .withEnv("KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL", "SASL_PLAINTEXT")
              .withEnv("KAFKA_SASL_ENABLED_MECHANISMS", "PLAIN,SASL_PLAINTEXT")
              .withEnv("KAFKA_SASL_JAAS_CONFIG", JAAS_CONFIG);

这是我正在玩的东西,但出现以下错误:

org.apache.kafka.common.errors.IllegalSaslStateException: Unexpected handshake request with client mechanism PLAIN, enabled mechanisms are []

似乎启用的机制(PLAIN)被完全忽略了。为什么是这样?我检查了文档,但看不到如何在容器中配置它。

标签: dockerapache-kafkatestcontainers

解决方案


推荐阅读