Как настроить разные брокеры / конечные точки Kafka для разных сред тестирования? - PullRequest
1 голос
/ 15 января 2020

Я использую Kafka в своих интеграционных тестах, в которых он публикует различные темы, и мои тесты считывают их и проверяют. Теперь я создал класс с разными константами / конечными точками Кафки, но эти константы различаются в разных средах; скажем, например, - ST, SIT и др. c. Как настроить эти константы в соответствии со средой, чтобы в конвейере, в какой бы среде я ни выполнял, мои тесты на ней подбирали правильные константы / конечные точки.

В настоящее время это выглядит, как показано ниже, пожалуйста, руководство, как настроить в различных средах.

package Kafka;

//ST

public interface KafkaConst {

public static String KAFKA_BROKERS = "https://10.156.192.120:1211";

public static Integer MESSAGE_COUNT=10;

public static String INBOUND_TOPIC_NAME="publish.st"

public static String GROUP_ID_CONFIG="consumerGroup1";

public static String SCHEMA_REGISTRY = "http://10.156.192.71:1212";

public static Integer MAX_NO_MESSAGE_FOUND_COUNT=10;

public static String OFFSET_RESET_LATEST="latest";

public static String OFFSET_RESET_EARLIER="earliest";

public static Integer MAX_POLL_RECORDS=1000; 

public static String KAFKA_File="src/test/resources/TransformedXML/";

}

// SIT

public interface KafkaConst {

public static String KAFKA_BROKERS = "https://10.156.165.120:1211";

public static Integer MESSAGE_COUNT=10;

public static String INBOUND_TOPIC_NAME="publish.sit"

public static String GROUP_ID_CONFIG="consumerGroup1";

public static String SCHEMA_REGISTRY = "http://10.156.165.71:1212";

public static Integer MAX_NO_MESSAGE_FOUND_COUNT=10;

public static String OFFSET_RESET_LATEST="latest";

public static String OFFSET_RESET_EARLIER="earliest";

public static Integer MAX_POLL_RECORDS=1000; 

public static String KAFKA_File="src/test/resources/TransformedXML/";

}

Ответы [ 2 ]

4 голосов
/ 15 января 2020

Я бы предложил отказаться от жестко заданных значений и использовать переменные окружения. Большинство инструментов CI / CD поддерживают внедрение переменных среды во время выполнения конвейера, в то время как в вашем коде вы берете эти значения не из жестко закодированных классов, а из переменных среды.

Я вижу, что вы добавили spring-kafka tag ... в приложении Spring очень просто получить значения из переменных окружения. Вы можете использовать аннотацию @Value или @ConfigurationProperties. В inte * есть тонны примеров rnet для обоих.

1 голос
/ 15 января 2020

Используйте Spring Profiles , чтобы выбрать, какие свойства применяются в каждой среде.

Часто бывает полезно условно включить или отключить полный @Configuration класс или даже отдельный @Bean methods на основе произвольного состояния системы. Одним из распространенных примеров этого является использование аннотации @Profile для активации bean-компонентов только в том случае, если определенный профиль c включен в среде Spring (подробности см. В разделе «Профили определения бина»).

...