I have a Akka Actor application which works on localhost - mainly to run an 
asynchronous batch job. Tests on localhost work as expected. However, when 
deployed to AWS EC2, the actors don't start. I don't know what could be 
work.

Below is the application main class and after it is the Actor class to star

object ApplicationMain {

    def main(args: Array[String]): Unit = {

        val system = ActorSystem("MyPIIScannerActorSystem")

        val systemSupervisor = system.actorOf(Props[AppSupervisor], 
"MyPIIScannerActorSystem")

        val s3BucketName = System.getenv("MY_S3_BUCKET")
        val s3Prefix = System.getenv("MY_S3_PREFIX")

        require(!s3BucketName.isEmpty, "ENV Variable: MY_S3_BUCKET must be 
available")

        systemSupervisor ! Props(new ScanRequestActor(bucketName=s3BucketName, 
s3Prefix = Some(s3Prefix)))

        val objectScanRequestActor = system.actorOf(
            Props(new ScanRequestActor(bucketName=s3BucketName, s3Prefix = 
Some(s3Prefix)))
        )
        // initialize scan request on bucket
        objectScanRequestActor !  ScanRequestActor.Initialize
        System.setProperty("log4j2.debug", "")
        ElasticWrapper.getClusterConnection().rest.close()
        system.terminate()
    }
}


Akka Actor class to start

class ScanRequestActor(val bucketName: String = null, val s3Prefix: 
Option[String] = None)
  extends Actor with ActorLogging  {

  import ScanRequestActor._

  if (bucketName == null) {
    throw new NullPointerException(s"Constructor AWS S3 BucketName cannot be 
null or empty")
    context.system.terminate()
  }

  val scanResultsActor = context.actorOf(ScanResultsActor.props, 
"scanResultsActor")

  def receive = {
    case Initialize =>
      log.info(s"Initialied S3 Scan Request on " +
        s"Bucket: ${bucketName} and Prefix: ${s3Prefix.orNull} ")
      // do bucket scanning here and send message to ScanResultsActor
      val scanRequestMessage = BaseClassifier.setS3ScanInputPath(bucketName, 
s3Prefix.orNull)
      scanResultsActor ! ScanRequestMessage(scanRequestMessage)
    case ScanResultsActor.ScanResultsMessage(text) =>
      log.info("In ScanResultsActor - received message: {}", text)
      context.system.terminate()
  }
}

object ScanRequestActor {
  val props: Props = Props[ScanRequestActor]
  case object Initialize
  case class ScanRequestMessage(fullScanStats: FullScanStats)
}

Enter code here...

Is there anything I am doing wrong?

Thanks in advance


-- 
*****************************************************************************************************
** New discussion forum: https://discuss.akka.io/ replacing akka-user 
google-group soon.
** This group will soon be put into read-only mode, and replaced by 
discuss.akka.io
** More details: https://akka.io/blog/news/2018/03/13/discuss.akka.io-announced
*****************************************************************************************************
>>>>>>>>>> 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to