A not very interesting library, but it helps not to repeat myself when codding akka and akka http.
It helps me to setup kamon library using akka extensios
.
And it also (ab)use same functionality to expose stream materializer
(as a singleton) to actor tree.
Library is published to bintray to use it add sbt-bintray
plugin to plugins.sbt
addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.4")
Add bintray resolver to `build.sbt'
resolvers += Resolver.bintrayRepo("milenkovicm", "maven")
Add the dependency
"com.github.milenkovicm" %% "akka-contrib" % "0.1.0"
Akka extension to start up kamon monitoring.
akka {
extensions = [com.github.milenkovicm.akka.ActorMaterializerExtension]
}
akka-contrib.monitoring.enable = true
kamon {
reporters = [kamon.prometheus.PrometheusReporter, kamon.jaeger.JaegerReporter]
jaeger {
//host = "localhost"
//port = 14268
host = ${?MONITORING_JEAGER_HOST}
port = ${?MONITORING_JEAGER_PORT}
}
prometheus {
embedded-server {
hostname = "0.0.0.0"
port = 9095
port = ${?MONITORING_PROMETHEUS_PORT}
}
}
akka-http {
name-generator = "default"
}
akka {
ask-pattern-timeout-warning = "lightweight"
}
trace {
sampler = "always"
sampler = ${?MONITORING_TRACE_SAMPLER}
}
environment {
service = ${?MONITORING_ENV_HOST}
service = ${?MARATHON_APP_ID}
host = ${?MONITORING_ENV_HOST}
host = ${?HOST}
instance = ${?MONITORING_ENV_INSTANCE}
instance = ${?MESOS_TASK_ID}
}
system-metrics {
jvm {
enabled = on
enabled = ${?MONITORING_SYSTEM_JVM_ENABLED}
hiccup-monitor {
enabled = off
enabled = ${?MONITORING_SYSTEM_JVM_HICCUP_ENABLED}
}
}
host {
enabled = off
enabled = ${?MONITORING_SYSTEM_HOST_ENABLED}
// refresh-interval = 1 second
// context-switches-refresh-interval = 1 second
}
}
}
Create and reuse stream materializer
across akka application:
import akka.actor.ActorSystem
import akka.stream.Materializer
import com.github.milenkovicm.akka.GlobalMaterializerExtension
implicit val system: ActorSystem = ActorSystem()
implicit val materializer: Materializer = GlobalMaterializerExtension(system).materializer
Released using sbt-git
git tag v0.1.0
sbt release
This code is open source software licensed under the Apache-2.0 license.