Как исправить ошибку от встроенной кафки, которая не может найти meta.properties
Я пытаюсь сделать интеграционный тест для приложения, использующего kafka, kafka-streams и cassandra. Но когда я пытаюсь установить тестовый класс, у меня есть 2 ошибки: ОШИБКА [main] BrokerMetadataCheckpoint: не удалось прочитать файл meta.properties в каталоге dir ОШИБКА [main] KafkaServer: не удалось прочитать meta.properties в каталоге журнала
Я использую spring-boot-starter 2.1.2, spring-boot-starter-test 2.1.2, spring-kafka 2.2.0, spring-kafka-test 2.2.0, apache.kafka-streams 2.1.0
пытается изменить параметры logs.dir и logs.dirs. использовать @EnableKafka @EnableKafkaStreams
@RunWith(SpringRunner.class)
@SpringBootTest
@EmbeddedKafka(partitions = 3, controlledShutdown = false, count = 1, topics = {"zc.deviceposition"}, brokerProperties = {"listeners=PLAINTEXT://localhost:9092", "port=9092", "log.dir=/home/name/logs"})
@EmbeddedCassandra(timeout = 60000)
@CassandraDataSet(value = {"bootstrap_test.cql"}, keyspace = "statistics")
@ActiveProfiles("test")
@DirtiesContext
public class CassandraTripsAggregatorProcessorSupplierIntegrationTest {
@Test
public void someTest() {System.out.println("hello world");}
}
Я ожидаю запуска контекста со встроенной кафкой, но сейчас я получаю сообщение об ошибке, что meta.properties не существует
0 ответов
Я проверил исходный код kafka, чтобы увидеть, что на самом деле происходит:
В этом классе выдается сообщение об ошибке. Во время запуска сервера kafkameta.properties
файл читается и создается, если он не существует (см. здесь).
Поэтому я думаю, что с этим ничего нельзя поделать, поскольку на самом деле это не ошибка, но, вероятно, уровень журнала в коде kafka неправильный.
Поскольку вы используете собственный log.dir в свойствах вашего брокера, одним из решений является создание файла meta.properties в вашей директории log с некоторым минимальным значением config:
version=0
broker.id=0
Я также рекомендовал бы разместить этот файл и каталог где-нибудь в тестовой директории вашего проекта (то есть не обязательно в /home/) и убедиться, что он очищается должным образом после каждого запуска теста.