Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 嵌入式卡夫卡测试(由SBT运行)间歇性失败,并出现ZookePerServer错误_Apache Kafka_Sbt_Apache Zookeeper_Spring Kafka_Embedded Kafka - Fatal编程技术网

Apache kafka 嵌入式卡夫卡测试(由SBT运行)间歇性失败,并出现ZookePerServer错误

Apache kafka 嵌入式卡夫卡测试(由SBT运行)间歇性失败,并出现ZookePerServer错误,apache-kafka,sbt,apache-zookeeper,spring-kafka,embedded-kafka,Apache Kafka,Sbt,Apache Zookeeper,Spring Kafka,Embedded Kafka,我正在使用。每个测试分别支持一个嵌入式kafka实例,生成事件并断言生成的下游事件 在IDE中运行时,测试始终通过(例如IntelliJ),但在使用SBT运行时,测试间歇性失败(约50%的时间,没有规律性)。如果测试失败,我会看到以下错误: o.a.zookeeper.server.ZooKeeperServer - ZKShutdownHandler is not registered, so ZooKeeper server won't take any action on ERROR or

我正在使用。每个测试分别支持一个嵌入式kafka实例,生成事件并断言生成的下游事件

在IDE中运行时,测试始终通过(例如IntelliJ),但在使用SBT运行时,测试间歇性失败(约50%的时间,没有规律性)。如果测试失败,我会看到以下错误:

o.a.zookeeper.server.ZooKeeperServer - ZKShutdownHandler is not registered, so ZooKeeper server won't take any action on ERROR or SHUTDOWN server state changes
此外,我还看到许多报告缺少ZooKeeper节点的信息日志,例如:

o.a.z.server.PrepRequestProcessor - Got user-level KeeperException when processing sessionid:0x164a50fe9fd0001 type:create cxid:0x5 zxid:0x4 txntype:-1 reqpath:n/a Error Path:/brokers Error:KeeperErrorCode = NoNode for /brokers
这些日志不会出现在成功的测试中。当我说“我看到很多信息日志”时,我指的是很多,大约40个这样的日志,其中一些节点路径嵌套在以前报告的节点路径中

研究表明错误日志是无辜的,我想信息日志也是无辜的,但在测试失败时它们是独立的

2017年7月更新:

K流/生产者/消费者配置:

Properties properties = new Properties();
properties.put(StreamsConfig.APPLICATION_ID_CONFIG, appName);
properties.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapUrls);
properties.put(StreamsConfig.STATE_DIR_CONFIG, String.format("/tmp/kafka-streams/%s/%s",
properties.put(StreamsConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG, 0);
properties.put(StreamsConfig.CLIENT_ID_CONFIG, appName);
properties.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);
properties.put(StreamsConfig.REPLICATION_FACTOR_CONFIG, 1);
properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
properties.put(ConsumerConfig.GROUP_ID_CONFIG, appName);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.cla
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class);
嵌入式卡夫卡初创公司:

@Rule
public KafkaEmbedded kafka = new KafkaEmbedded(getNumKafkaServers(), true, getNumPartitionsPerTopic(), getTopics().keySet().toArray(new String[0]));
测试前:

@Before
public void before() {
    // build KStreams and start topology
    KStreamBuilder kStreamBuilder = new KStreamBuilder();
    buildStream(kStreamBuilder);
    KafkaStreams kafkaStreams = new KafkaStreams(kStreamBuilder, streamsConfig);
    kafkaStreams.start();
}
试验后:

@After
public void after() {
    kafka.destroy();
    FileUtils.deleteDirectory(new File(streamsConfig.getString(StreamsConfig.STATE_DIR_CONFIG)));
}
2017年7月更新:

更详细地说,这是一个Spring项目,每个测试都有如下注释:

@SpringBootTest(classes = <this-test-class>.class)
@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest(类=.class)
@ActiveProfiles(“测试”)
@RunWith(SpringRunner.class)

Update,发现通过IDE运行成功的测试时会显示信息日志。但是没有错误日志。额外的更新,我似乎无法通过“sbt testOnly”单独运行它时发生错误。因此,只有在与其他集成测试一起测试时才会发生错误。请说明,至少有一个测试是使用这种方法编写的。抱歉@ArtemBilan,不幸的是,这些测试是在专有测试框架之上编写的,我无法共享。没有它,测试就没有多大用处。但是,我可以显示配置和启动/拆卸代码。由于这种情况发生在许多相同类型的测试上,因此这段通用代码应该被证明是有用的。这正是通过
@ClassRule
公共静态KafkameBedded embeddedKafka=new KafkameBedded(1,true,1,…)上执行的操作属性: