blob: 3be7b28f1eb3dbc149421031f9aa0c43ed63ffbc [file] [log] [blame]
package com.daumkakao.s2graph.rest.config
import java.util.concurrent.TimeUnit
import com.codahale.metrics.{Metric, ConsoleReporter, MetricRegistry}
import play.api.{Play, Logger}
object Config {
val conf = Play.current.configuration
// PHASE
lazy val PHASE = conf.getString("phase").getOrElse("dev")
// CACHE
lazy val CACHE_TTL_SECONDS = conf.getInt("cache.ttl.seconds").getOrElse(600)
lazy val CACHE_MAX_SIZE = conf.getInt("cache.max.size").getOrElse(10000)
//KAFKA
lazy val KAFKA_METADATA_BROKER_LIST = conf.getString("kafka.metadata.broker.list").getOrElse("localhost")
lazy val KAFKA_PRODUCER_POOL_SIZE = conf.getInt("kafka.producer.pool.size").getOrElse(0)
lazy val KAFKA_LOG_TOPIC = s"s2graphIn${PHASE}"
lazy val KAFKA_FAIL_TOPIC = s"s2graphIn${PHASE}Failed"
// use Keep-Alive
lazy val USE_KEEP_ALIVE = conf.getBoolean("use.keep.alive").getOrElse(false)
// is query or write
lazy val IS_QUERY_SERVER = conf.getBoolean("is.query.server").getOrElse(true)
lazy val IS_WRITE_SERVER = conf.getBoolean("is.write.server").getOrElse(true)
val metricRegistry = new com.codahale.metrics.MetricRegistry()
}
trait Instrumented extends nl.grons.metrics.scala.InstrumentedBuilder {
val metricRegistry: MetricRegistry = Config.metricRegistry
val consoleReporter = ConsoleReporter.forRegistry(metricRegistry)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build()
val stats = new collection.mutable.HashMap[String, Metric]
/**
* Edge
*/
// insert
def getOrElseUpdateMetric[M <: Metric](key: String)(op: => M)= {
stats.get(key) match {
case None =>
val m = op
stats += (key -> m)
m.asInstanceOf[M]
case Some(m) => m.asInstanceOf[M]
}
}
}