Advertisement
Guest User

Untitled

a guest
Nov 20th, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.14 KB | None | 0 0
  1. package pl.sigmapoint.kmx.micro.stack
  2.  
  3. import java.io.{InputStreamReader, BufferedReader}
  4.  
  5. import akka.actor.{ActorRef, Props}
  6. import com.rabbitmq.client.ConnectionFactory
  7. import com.thenewmotion.akka.rabbitmq.ConnectionActor
  8. import com.typesafe.config.ConfigFactory
  9. import net.ceedubs.ficus.Ficus._
  10. import pl.sigmapoint.kmx.micro.actors.{AndroidReportsActor, IosAppsActor, IosReportsActor}
  11. import spray.json._
  12.  
  13. import scala.io.Source
  14.  
  15. trait CoreActors extends DefaultJsonProtocol with IosPersonaDefinitionsModel {
  16.   this: Core =>
  17.  
  18.   val rabbitMqConnectionFactory = new ConnectionFactory()
  19.   ConfigFactory.load().as[Option[String]]("kmx.reports.receiver.queue.uri").map { uriFromConfig =>
  20.     println(s"using amqp uri = $uriFromConfig")
  21.     rabbitMqConnectionFactory.setUri(uriFromConfig)
  22.   }
  23.  
  24.   val iosPersonaDefinitions: IosPersonaDefinitions = {
  25.     println("before from file " + System.currentTimeMillis())
  26.     val string: String = readResource("src/main/resources/iosPersonDefs.json")
  27.     println("read from file" + System.currentTimeMillis())
  28.     val parsed: IosPersonaDefinitions = iosPersonaDefinitionsJsonFormat.read(string.parseJson) //lastModified timestamp stored in file must be in miliseconds!
  29.     println("parsed json" + System.currentTimeMillis())
  30.     parsed
  31.   }
  32.  
  33.   val connectionActor: ActorRef = actorSystem.actorOf(ConnectionActor.props(rabbitMqConnectionFactory), "QueueConnection")
  34.  
  35.   val sampleActor = actorSystem.actorOf(Props(classOf[AndroidReportsActor], connectionActor), "androidActor")
  36.  
  37.   val iosReportActor = actorSystem.actorOf(Props(classOf[IosReportsActor], connectionActor))
  38.  
  39.   val iosAppsActor = actorSystem.actorOf(Props(classOf[IosAppsActor], iosPersonaDefinitions, connectionActor))
  40.  
  41.   private def readResource(resourcePath: String): String = {
  42.     val path = if (!resourcePath.startsWith("/")) "/" + resourcePath else resourcePath
  43.     val reader = new BufferedReader(new InputStreamReader(getClass.getResourceAsStream(path)))
  44.     val sb = StringBuilder.newBuilder
  45.     var line = reader.readLine()
  46.     while(line!=null){
  47.       sb.append(line)
  48.       line = reader.readLine()
  49.     }
  50.     sb.mkString
  51.   }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement