Created
June 13, 2019 15:05
-
-
Save gabfssilva/78677f295df8ce64199e2c7aaed290ce to your computer and use it in GitHub Desktop.
order actor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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