使用java Kafka客户端的测试中出现间歇性异常
我正在测试两个类,它们打算使用官方Java客户端和嵌入式服务器从Kafka(v0.10.1)日志中写入和读取。在实例化一个使用者时,我会得到以下间歇性异常跟踪:使用java Kafka客户端的测试中出现间歇性异常,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我正在测试两个类,它们打算使用官方Java客户端和嵌入式服务器从Kafka(v0.10.1)日志中写入和读取。在实例化一个使用者时,我会得到以下间歇性异常跟踪: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:702)
org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:702)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:557)
at cakesolutions.kafka.KafkaConsumer$.apply(KafkaConsumer.scala:128)
at com.jobandtalent.kafka.client.KafkaTopic.com$jobandtalent$kafka$client$KafkaTopic$$buildConsumer$1(KafkaTopic.scala:37)
at com.jobandtalent.kafka.client.KafkaTopic$$anonfun$initialize$1$1.apply(KafkaTopic.scala:30)
at com.jobandtalent.kafka.client.KafkaTopic$$anonfun$initialize$1$1.apply(KafkaTopic.scala:29)
at fs2.Task$$anonfun$delay$1.apply(Task.scala:187)
at fs2.Task$$anonfun$delay$1.apply(Task.scala:187)
at fs2.Task$$anonfun$suspend$1$$anonfun$2.apply(Task.scala:195)
at fs2.Task$$anonfun$suspend$1$$anonfun$2.apply(Task.scala:195)
at fs2.util.Attempt$.apply(Attempt.scala:12)
at fs2.Task$$anonfun$suspend$1.apply(Task.scala:195)
at fs2.Task$$anonfun$suspend$1.apply(Task.scala:195)
at fs2.internal.Future.step(Future.scala:54)
at fs2.internal.Future.listen(Future.scala:30)
at fs2.internal.Future.runAsync(Future.scala:69)
at fs2.Task.unsafeRunAsync(Task.scala:96)
at fs2.Task$Ref$$anonfun$set$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(Task.scala:332)
at fs2.Strategy$$anon$3$$anon$4.run(Strategy.scala:54)
at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.ClassCastException: class org.apache.kafka.clients.consumer.RangeAssignor
at java.lang.Class.asSubclass(Class.java:3404)
at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:332)
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:225)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:637)
... 23 more
这是怎么发生的?我不知道异常的根本原因,但在实例化Kafka客户端之前,我通过手动设置上下文类加载器修复了它
Thread.currentThread().setContextClassLoader(...any class from the Kafka jar...)
你能发布完整的代码吗?一定是类冲突。也许嵌入式服务器引入了一些遗留类。如何从kafka jar加载任何类?
Thread.currentThread().setContextClassLoader(...any class from the Kafka jar...)