avro에서 사용자 정의 사례 클래스로 이동하는 akka http에 대한 unmarshaller를 만들려고합니다. 그러나 그것은 내게 "애매한 가치를 찾을 수 없다"는 매우 모호한 오류를줍니다. 이것을 디버깅하거나 스칼라로 하여금 문제가있는 곳을 어떻게 생각하게 할 수 있습니까? 나는 또한이 같은 Unmarshaller에 만든 같은 클래스에서akka http의 경로 dsl을 디버깅하는 방법
class MetricsRoute(implicit val system: ActorSystem, implicit val materializer: ActorMaterializer) {
import system.dispatcher
def getRoute() = {
path("metrics") {
put {
decodeRequest {
entity(as[Metrics]) { metrics: Metrics =>
println(metrics.time)
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>hi!</h1>"))
}
}
}
}
}
:
나는 다음과 같은 경로를 설정
implicit def avroUnmarshaller(): FromRequestUnmarshaller[Metrics] =
Unmarshaller.withMaterializer {
implicit ex: ExecutionContext =>
implicit mat: Materializer =>
request: HttpRequest => {
val inputStream = request.entity.dataBytes.runWith(
StreamConverters.asInputStream(FiniteDuration(3, TimeUnit.SECONDS))
)
val reader = new SpecificDatumReader[AvroMetrics](classOf[AvroMetrics])
val decoder:BinaryDecoder = DecoderFactory.get().binaryDecoder(inputStream, null)
//AvroMetrics is a case class generated from the avro schema
val avroMetrics:AvroMetrics = AvroMetrics(0, 0, List())
reader.read(avroMetrics, decoder)
Future {
//converts the avro case class to the case class specific for my application
convertMetrics(avroMetrics)
}
}
}
을하지만이 나에게주는 암시 찾을 수 없습니다 '매우 모호한 값 '오류 :
[error] /mypath/MetricsRoute.scala:34: could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[my.package.types.Metrics]
[error] entity(as[Metrics]) { metrics: Metrics =>
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
누락 된 부분이나 잘못된 부분을 디버깅하는 방법은 무엇입니까?
편집 : 나는 그래서 마샬 코드 자체를 나타낼 것으로 보인다
entity(avroUnmarshaller) { metrics: Metrics =>
에
entity(as[Metrics]) { metrics: Metrics =>
을 변경, 자신 Unmarshaller에이 수행 작업을 지정할 때
주목할 필요가있다 틀린 것은 아니지만 형식에 문제가 있습니까?
아를,. 너무 나쁘면 유형에 명시 적으로 표시되지 않습니다. val over def를 사용하면 어떤 이점이 있습니까? – Xeli
'def'는 호출 될 때마다 새롭게 평가되고,'val'은 한번만 평가됩니다 (https://stackoverflow.com/questions/4437373/use-of-def-val-and-var-in-scala) –