All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.outtherelabs.braveplay.TracingClient.scala Maven / Gradle / Ivy

The newest version!
package com.outtherelabs.braveplay

import com.github.kristofa.brave.{ Brave, Sampler }
import com.github.kristofa.brave.http._
import com.outtherelabs.braveplay.brave.LoggingSpanCollectorMetricsHandler
import com.outtherelabs.braveplay.filters.TracingClientFilter
import javax.inject.Inject
import play.api.Configuration
import play.api.libs.ws.WSRequestFilter
import play.api.mvc.RequestHeader
import scala.concurrent.ExecutionContext

class TracingClient @Inject() (config: Configuration)(implicit ec: ExecutionContext) {

  private def braveBuilder: Brave.Builder = {
    val componentName = config.getString("tracing.component-name").getOrElse("play")
    val host = config.getString("tracing.host").getOrElse("")
    val port = config.getString("tracing.port").getOrElse("")
    val rate = config.getDouble("tracing.sample-rate-percentage").getOrElse(0.0).toFloat
    val spanCollector = HttpSpanCollector.create(s"$host:$port", new LoggingSpanCollectorMetricsHandler())

    new Brave.Builder(componentName).traceSampler(Sampler.create(rate)).spanCollector(spanCollector)
  }

  def filter(implicit parentContext: RequestHeader): WSRequestFilter = {
    new TracingClientFilter(braveBuilder.build(), parentContext)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy