Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package engine
- import akka.NotUsed
- import akka.actor.{Actor, ActorLogging, ActorRef, ActorSystem, Props, Terminated}
- import akka.http.scaladsl.Http
- import akka.http.scaladsl.model.{HttpRequest, HttpResponse}
- import akka.stream.{ActorMaterializer, ActorMaterializerSettings, OverflowStrategy, ThrottleMode}
- import akka.stream.scaladsl.{Sink, Source}
- import com.typesafe.config.ConfigFactory
- import engine.Sender.Send
- import scala.concurrent.duration._
- import scala.io.StdIn
- // TODO persistent queue
- object Engine {
- def main(args: Array[String]): Unit = {
- val config = ConfigFactory.load()
- val value = config.getString("my.secret.value")
- println(s"My secret value is $value")
- val system = ActorSystem("EngineSystem")
- try {
- val senderActor: ActorRef = system.actorOf(Sender.props(), "SenderActor")
- implicit val materializer = ActorMaterializer.create(system)
- val actor = Source.actorRef(bufferSize = 1000, OverflowStrategy.dropNew)
- .throttle(100, 1.second)
- .to(Sink.actorRef(senderActor, NotUsed))
- .run()
- for (i <- 1 to 2000)
- actor ! Send
- StdIn.readLine()
- } finally {
- system.terminate()
- }
- }
- }
- object Sender {
- def props(): Props = Props(new Sender)
- final case class Send()
- }
- class Sender() extends Actor with ActorLogging {
- import akka.pattern.pipe
- import context.dispatcher
- final implicit val materializer: ActorMaterializer = ActorMaterializer(ActorMaterializerSettings(context.system))
- val http = Http(context.system)
- override def preStart(): Unit = log.info("Sender started")
- override def postStop(): Unit = log.info("Sender stopped")
- override def receive: Receive = {
- case resp @ Send ⇒
- http.singleRequest(HttpRequest(uri = "http://10.210.7.249:13013/cgi-bin/sendsms?username=dynamo&password=dynam0123&to=1234567890&from=1234&smsc=unknown&text=asdfghj")).pipeTo(self)
- case resp @ HttpResponse(code, _, _, _) =>
- log.info("Response code: " + code)
- resp.discardEntityBytes()
- case resp @ _ =>
- throw new Exception(resp.toString);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement