【发布时间】:2019-06-25 19:59:53
【问题描述】:
我有以下代码,但无法编译:
import akka.NotUsed
import akka.actor.typed.Behavior
import akka.actor.typed.scaladsl.Behaviors
import akka.pattern.FutureRef
import akka.stream.scaladsl._
import akka.stream.typed.scaladsl.ActorMaterializer
import org.apache.kafka.clients.admin._
import scala.jdk.FutureConverters._
import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.duration
object KafkaDetectorActor {
val create: Behavior[NotUsed] = Behaviors.setup { context =>
implicit val system = context.system
implicit val materializer = ActorMaterializer()
implicit val dispatcher = context.system.dispatchers
Behaviors.same
}
private def health(server: String)(implicit executor: ExecutionContext): Future[Boolean] = {
val props = new Properties
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, server)
props.put(AdminClientConfig.CONNECTIONS_MAX_IDLE_MS_CONFIG, "10000")
props.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, "5000")
AdminClient
.create(props)
.listTopics()
.names()
.asScala
}
其中names 返回KafkaFuture[java.util.Set[String]]。
它无法识别asScala 方法。 scala.jdk.FutureConverters._ 库被导入。我做错了什么?
【问题讨论】:
-
它也不起作用。@MarioGalic 你试过了吗?
-
你使用 scala 2.13 吗?
-
编译错误是什么?
-
value asScala is not a member of org.apache.kafka.common.KafkaFuture[java.util.Set[String]] [error] possible cause: maybe a semicolon is missing beforevalue asScala? [error] .asScala -
AdminClient是一个 Java 库,names()方法返回一个 Future。
标签: scala akka scala-java-interop