0

我有一个 Scala Play 项目 - Finagle 和 ElasticSearch

我正在使用带有旧版本 API 的 Finagle 客户端,如下所示:

val client = ClientBuilder()
  .codec(Http)
  .hosts("localhost:10000,localhost:10001,localhost:10003")
  .hostConnectionLimit(1)
  .build()

这是我的代码:

https://gist.github.com/hectorgool/f217d16e2c15b122d7a7

并且工作正常,但现在我想将我的代码升级到新的 API 版本,如下所示:

val client = Http.newService("localhost:10000,localhost:10001")

我的代码的新版本在这里:

https://github.com/hectorgool/es-client/blob/master/app/lib/FinagleClient.scala

但是,现在我的项目没有编译,这行(111)有一个错误:

111: 验证客户端 = clientFactory.apply()()

我不知道如何解决它

4

1 回答 1

0

解决了

我改变这个:

  val clientFactory: ServiceFactory[HttpRequest, HttpResponse] = ClientBuilder()
    .codec(Http())
    .hosts(hosts)
    .tcpConnectTimeout(1.second)
    .hostConnectionLimit(1)
    .buildFactory() 

为了这:

val clientFactory: Service[HttpRequest, HttpResponse] = Http.newService(hosts) 

我总结一下:

val client = clientFactory.apply()()

我改变了这个:

httpResponse.onSuccess{
  response =>
    Logger.debug("Received response: " + response)
    client.close()
}.onFailure{ err: Throwable =>
    Logger.error(err.toString)      
    client.close()
}

为了这:

httpResponse.onSuccess{
  response =>
    Logger.debug("Received response: " + response)
}.onFailure{ err: Throwable =>
    Logger.error(err.toString)      
}

问题的原因是:

client.close()

因为关闭连接

于 2015-05-14T21:05:22.880 回答