두 개의 다른 로컬 Akka ActorSystems
에 원격으로 연결하려고합니다. Scala 2.11.1 및 Akka 2.3.3을 사용하고 있습니다.왜 원격 액터 시스템에 연결할 수 없습니까?
내 application.conf은 다음과 같습니다
akka {
loglevel = "DEBUG"
actor {
provider = "akka.remote-RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 2552
}
}
}
localConf {
akka.remote.netty.tcp.port = 8448
}
remoteConf {
akka.remote.netty.tcp.port = 4224
}
Actor
꽤 똑바로 앞으로이다.
import akka.actor._
import com.typesafe.config.ConfigFactory
object RemoteStart extends App {
val config = ConfigFactory.load()
val system = ActorSystem("remoteSystem", config.getConfig("remoteConf").withFalBack(config))
val actor = system.actorOf(Props[Consumer], name = "consumer")
}
그리고 마지막으로 내 로컬 시스템의 코드 : 내가 사용하고있는 원격 시스템에 대한
import akka.actor._
class Consumer extends Actor {
def receive = {
case msg: String => println("Received: " + msg)
}
}
import akka.actor._
import com.typesafe.config.ConfigFactory
object LocalStart extends App {
val config = ConfigFactory.load()
val system = ActorSystem("loaclSystem", config.getConfig("localConf").withFallBack(config))
val actor = system.actorSelection("akka.tcp://[email protected]:4224/user/consumer")
actor ! "test"
}
나는 그것이 Received: test
를 인쇄 할 것으로 기대한다. 하지만 대신 오류 메시지가 나타납니다. 대신 다음과 같은 오류 메시지가 표시됩니다.
java.lang.NoSuchMethodError: akka.actor.ActorSelectionMessage.wildcardFanOut()Z
무엇이 누락 되었습니까?
실제로 클래스 경로에 많은 라이브러리가 충돌하는 버전이 있습니다. SBT 캐시를 삭제하고 실제로 필요한 라이브러리를 다시 가져온 후에는 모두 완벽하게 작동했습니다. –