/rider/rider-server/src/main/scala/edp/rider/RiderStarter.scala

https://github.com/edp963/wormhole · Scala · 91 lines · 53 code · 19 blank · 19 comment · 2 complexity · 63294bde5f4ba8fd005d7299e774882c MD5 · raw file

  1. /*-
  2. * <<
  3. * wormhole
  4. * ==
  5. * Copyright (C) 2016 - 2017 EDP
  6. * ==
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS,
  15. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. * See the License for the specific language governing permissions and
  17. * limitations under the License.
  18. * >>
  19. */
  20. package edp.rider
  21. import akka.actor.{ActorRef, Props}
  22. import akka.http.scaladsl.Http
  23. import akka.stream.ActorMaterializer
  24. import edp.rider.common._
  25. import edp.rider.kafka.{CacheMap, KafkaUtils, RiderConsumer}
  26. import edp.rider.module._
  27. import edp.rider.monitor.ElasticSearch
  28. import edp.rider.rest.persistence.entities.User
  29. import edp.rider.rest.router.RoutesApi
  30. import edp.rider.rest.util.CommonUtils._
  31. import edp.rider.schedule.SchedulerActor
  32. import edp.rider.zookeeper.FeedbackDirectiveWatcher
  33. import slick.jdbc.MySQLProfile.api._
  34. import scala.concurrent.Await
  35. import scala.concurrent.duration._
  36. import scala.util.{Failure, Success}
  37. object RiderStarter extends App with RiderLogger {
  38. lazy val modules = new ConfigurationModuleImpl
  39. with ActorModuleImpl
  40. with PersistenceModuleImpl
  41. with BusinessModuleImpl
  42. with RoutesModuleImpl
  43. implicit val system = modules.system
  44. implicit val materializer = ActorMaterializer()
  45. implicit val ec = system.dispatcher
  46. DbModule.createSchema
  47. val future = Http().bindAndHandle(new RoutesApi(modules).routes, RiderConfig.riderServer.host, RiderConfig.riderServer.port)
  48. future.onComplete {
  49. case Success(_) =>
  50. riderLogger.info(s"WormholeServer http://${RiderConfig.riderServer.host}:${RiderConfig.riderServer.port}/.")
  51. CacheMap.init
  52. if (Await.result(modules.userDal.findByFilter(_.email === RiderConfig.riderServer.adminUser), minTimeOut).isEmpty)
  53. Await.result(modules.userDal.insert(User(0, RiderConfig.riderServer.adminUser, RiderConfig.riderServer.adminPwd, RiderConfig.riderServer.adminUser, "admin", RiderConfig.riderServer.defaultLanguage, active = true, currentSec, 1, currentSec, 1)), minTimeOut)
  54. if (RiderConfig.monitor.databaseType.equalsIgnoreCase("es"))
  55. ElasticSearch.initial(RiderConfig.es)
  56. val feedbackWatchActor = system.actorOf(Props[FeedbackDirectiveWatcher], "feedbackWatcher")
  57. feedbackWatchActor ! FeedbackWatch
  58. riderLogger.info(s"Wormhole Zookeeper feedback directive watcher started")
  59. KafkaUtils.createRiderKafkaTopic()
  60. val consumerActor = system.actorOf(Props[RiderConsumer], "riderConsumer")
  61. consumerActor ! Consume
  62. riderLogger.info(s"WormholeServer Consumer started")
  63. val schedulerActorDel: ActorRef = system.actorOf(Props[SchedulerActor])
  64. system.scheduler.schedule(20.minute, 1.days, schedulerActorDel, HistoryDelete)
  65. val schedulerActorRefresh: ActorRef = system.actorOf(Props[SchedulerActor])
  66. system.scheduler.schedule(0.seconds, RiderConfig.refreshInterval.seconds, schedulerActorRefresh, RefreshYarn)
  67. riderLogger.info(s"Wormhole Scheduler started")
  68. case Failure(e) =>
  69. riderLogger.error(e.getMessage)
  70. system.terminate()
  71. }
  72. }