Verbindungsprobleme beim Ausführen des Kafka-Testcontainers mit der Spring Boot AppJava

Java-Forum
Anonymous
 Verbindungsprobleme beim Ausführen des Kafka-Testcontainers mit der Spring Boot App

Post by Anonymous »

Ich habe Verbindungsprobleme, wenn ich den Kafka-Testcontainer (confluentinc/cp-kafka:5.4.3) mit der Spring Boot-App ausführe. Ich frage mich, ob jemand dieses Problem auch schon einmal hatte. Nachdem der Kafka-Container gestartet wurde, versucht der Admin-Client, eine Verbindung zum Broker herzustellen, um die Metadaten abzurufen, aber es gelingt ihm nicht, eine Verbindung herzustellen.
Fehlerprotokoll:

Code: Select all

[AdminClient clientId=adminclient-2] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
Ich habe die folgenden Problemumgehungen versucht, um sicherzustellen, dass KafkaAdminClient die richtige Adresse verwendet, aber keine davon hat funktioniert:
  • Verwendete Boot-Strap-Serveradresse
  • Verwendet KAFKA_ADVERTISED_LISTENERS=BROKER://172.17.0.3:9092. Diese Adresse wurde von testcontainers_start.sh im Docker-Container festgelegt
  • Verwendet kafka.getContainerName(), um die Adresse zu bilden: Beispiel: BROKER://t-adsad:9092
  • Verwendet kafka.getHost() + „:“ + kafka.getMappedPort(9092)
Test Klasse:

Code: Select all

@RunWith(SpringRunner.class)
@Import(KafkaTestContainersConfiguration.class)
@SpringBootTest
@DirtiesContext
public class KafkaTestContainersLiveTest {
@ClassRule
public static KafkaContainer kafka =
new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:5.4.3"));

@BeforeClass
public static  void setupBootstrapServer(){
String server = "BROKER://"+kafka.getNetworkAliases().get(0)+":9092";
System.setProperty("kafka.bootstrap.servers", server);
}
Konfigurationsklasse:

Code: Select all

@Configuration
@EnableKafka
public class KafkaTestContainersConfiguration {
@Value("${kafka.bootstrap.servers}")
private String bootstrapServer;

@Value("${kafka.topic}")
private String topic;

public final int NUM_PARTITIONS=1;
public final short REPLICATION_FACTOR=1;

@Bean
public AdminClient adminClient() {
return KafkaAdminClient.create(adminClientConfigs());
}

public Map adminClientConfigs() {
Map props = new HashMap();
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServer);
props.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, 5000);
return props;
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post