![JAR search and dependency download from the Maven repository](/logo.png)
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