Skip to content

Instantly share code, notes, and snippets.

@gabfssilva
Created June 13, 2019 15:05
Show Gist options
  • Save gabfssilva/78677f295df8ce64199e2c7aaed290ce to your computer and use it in GitHub Desktop.
Save gabfssilva/78677f295df8ce64199e2c7aaed290ce to your computer and use it in GitHub Desktop.
order actor
package utils
import java.util.UUID
import akka.actor.{Actor, ActorRef, ActorSystem, Props}
import akka.util.Timeout
import software.amazon.awssdk.services.sqs.SqsAsyncClient
import akka.pattern.ask
import scala.concurrent.Future
import scala.concurrent.duration._
object Main extends App {
implicit val timeout = Timeout(1 second)
implicit val sqs: SqsAsyncClient = null
val actorSystem = ActorSystem()
import actorSystem.dispatcher
val orderActorRef = actorSystem.actorOf(Props(new OrderActor))
val result: Future[String] = (orderActorRef ? CreateOrder(2000)).mapTo[String] //vai filhão, mas, me avisa
result.onComplete(println)
orderActorRef ! "jamal cheiroso" //vai filhão
}
case class Order(id: UUID, value: Long, status: String)
case class CreateOrder(value: Long)
case class SendPaymentRequest()
case class ProcessPaymentResult()
case class ExportErp()
class OrderActor extends Actor {
import context._
var order: Order = null
def orderPaid: Receive = {
case ExportErp() =>
}
def orderCreated: Receive = {
case SendPaymentRequest() =>
case ProcessPaymentResult() =>
become(orderPaid)
}
def init: Receive = {
case CreateOrder(value) if order == null =>
println(s"creating an order with value $value")
order = Order(UUID.randomUUID(), value, "created")
sender() ! "order created"
become(orderCreated)
}
override def receive: Receive = init
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment