diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-11-06 16:29:54 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-11-09 18:01:35 +0100 |
commit | f498749274bc9f25ede7221d6bd8b3f0c3822dda (patch) | |
tree | 9371eb98b88830b5c61619a29f53fd4d45040e71 /kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala | |
parent | 6e3d9ae88ecce10420eeac82294c54c1b43dedf4 (diff) | |
download | Kamon-f498749274bc9f25ede7221d6bd8b3f0c3822dda.tar.gz Kamon-f498749274bc9f25ede7221d6bd8b3f0c3822dda.tar.bz2 Kamon-f498749274bc9f25ede7221d6bd8b3f0c3822dda.zip |
! newrelic: major refactor of the newrelic reporter
Most notable changes:
- The agent connection setup is separated from the actual metrics reporting,
this will be important in the near future when we start sending errors too.
- The metrics subscriptions are delayed until the connection to the agent is
established.
- The Tick metrics buffer is only created if necessary.
- Introduced the kamon.newrelic.max-initialize-retries and initialize-retry-delay
settings.
- External service calls via HTTP clients are reported as external services.
Diffstat (limited to 'kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala')
-rw-r--r-- | kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala new file mode 100644 index 00000000..ca003646 --- /dev/null +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala @@ -0,0 +1,23 @@ +package kamon.newrelic + +import akka.actor.ActorRef +import akka.util.Timeout +import spray.http.{ HttpResponse, HttpRequest } +import spray.httpx.RequestBuilding +import spray.httpx.encoding.Deflate +import spray.json._ +import spray.client.pipelining.sendReceive + +import scala.concurrent.{ ExecutionContext, Future } + +trait ClientPipelines extends RequestBuilding { + + def compressedPipeline(transport: ActorRef)(implicit ec: ExecutionContext, to: Timeout): HttpRequest ⇒ Future[HttpResponse] = + encode(Deflate) ~> sendReceive(transport) + + def compressedToJsonPipeline(transport: ActorRef)(implicit ec: ExecutionContext, to: Timeout): HttpRequest ⇒ Future[JsValue] = + compressedPipeline(transport) ~> toJson + + def toJson(response: HttpResponse): JsValue = response.entity.asString.parseJson + +} |