maven项目实现master和worker通信

 pom


  2.10.6


  
    org.scala-lang
    scala-library
    ${scala.version}
  


  
  
    com.typesafe.akka
    akka-actor_2.10
    2.2.2
  

    
    
        com.typesafe.akka
        akka-remote_2.10
        2.2.2
    


  
      
          
              org.apache.maven.plugins
              maven-compiler-plugin
              3.0
              
                  6
                  6
                  UTF-8
              
              
                  
                      compile
                      
                          compile
                      
                  
              
          

          
              net.alchim31.maven
              scala-maven-plugin
              3.2.1
              
                  
                      scala-compile-first
                      process-resources
                      
                          add-source
                          compile
                      
                  
              
          
          
              org.apache.maven.plugins
              maven-assembly-plugin
              2.5.5
              
                  
                      
                          scalaAkka.Worker
                      
                  
                  
                      jar-with-dependencies
                  
              
              
                  
                      make-assembly
                      package
                      
                          single
                      
                  
              
          
      
  

master

package scalaAkka

import akka.actor.{Actor, ActorSystem, Props}
import com.typesafe.config.ConfigFactory

class Master extends Actor{



  override def receive: Receive ={
    case "connect" =>{

      println("connected")
      sender ! "reply"
    }
  }
}

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


    println("aaaaa")
    val host = "10.1.30.143"
    val port = 8009
    val configStr =
      s"""
         |akka.actor.provider = "akka.remote.RemoteActorRefProvider"
         |akka.remote.netty.tcp.hostname = "$host"
         |akka.remote.netty.tcp.port = "$port"
       """.stripMargin
    val config = ConfigFactory.parseString(configStr)
    val system = ActorSystem("Master",config )
    val master = system.actorOf(Props(new Master),"master")
    system.awaitTermination()



  }
}

worker

package scalaAkka

import akka.actor.{Actor, ActorSelection, ActorSystem, Props}
import com.typesafe.config.ConfigFactory

class Worker(masterHost:String,masterPort:Int) extends Actor{

  var master:ActorSelection = _

  override def preStart(): Unit = {
    master =context.actorSelection(s"akka.tcp://Master@$masterHost:$masterPort/user/master")
    println("connect send ")
    master ! "connect"
  }

  override def receive: Receive = {

    case "reply" => println("reply from master")
  }
}

object  Worker{
  def main(args: Array[String]): Unit = {
    val host = "10.1.30.143"
    val port = 61616
    val configStr =
      s"""
         |akka.actor.provider = "akka.remote.RemoteActorRefProvider"
         |akka.remote.netty.tcp.hostname = "$host"
         |akka.remote.netty.tcp.port = "$port"
       """.stripMargin
    val config = ConfigFactory.parseString(configStr)
    val system = ActorSystem("worker",config)
    val worker = system.actorOf(Props(new Worker("10.1.30.143",8009)),"worker")
    system.awaitTermination()
  }
}

 

 

你可能感兴趣的:(scala,spark,大数据)