12

我正在尝试对使用 kafka、kafka-streams 和 cassandra 的应用程序进行集成测试。但是当我尝试设置测试类时,我有 2 个错误: 错误 [main] BrokerMetadataCheckpoint: 无法读取 dir 下的 meta.properties 文件 错误 [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");}
}

我希望使用嵌入式 kafka 运行上下文,但现在我收到一个错误,即 meta.properties 不存在

4

2 回答 2

0

我检查了 kafka 源代码,看看到底发生了什么:

在此类中引发错误消息。在 kafka 服务器启动期间,meta.properties如果文件不存在,则会读取并创建文件(请参见此处)。

所以我认为没有什么可以做的,因为它实际上不是一个错误,但可能kafka代码中的日志级别不正确。

于 2019-07-02T09:11:06.180 回答
-2

由于您在代理属性中使用自己的 log.dir,因此一种解决方案是在您的日志目录下创建一个 meta.properties 文件,其中包含一些最低配置:

version=0
broker.id=0

我还建议将该文件和目录放在项目的测试目录中的某个位置(即不一定在 /home/ 下),并确保在每次测试运行后正确清空它。

于 2019-04-12T14:22:29.697 回答