1

「UnboundedDequeBasedMailbox」を使用してリモート アクターを作成する際に問題が発生しています。アクターがスポーンされるマスター マシンと、アクターが実行されるスレーブがあります。

master.conf:

#Akka remote configuration
akka {
  actor {
    stashed-dispatcher {
      mailbox-type = "akka.dispatch.UnboundedDequeBasedMailbox"
    }
    provider = "akka.remote.RemoteActorRefProvider"
    deployment {
      "/*/RemoteChannelRoutingActor" {
        router = round-robin-pool
        nr-of-instances = 2
        target.nodes = ["akka.tcp://MyRemoteSystem@192.168.12.108:2552"]
      }
    }
  }
  remote {
    log-sent-messages = on
    log-received-messages = on
    netty.tcp.port = 2554
    netty.tcp.hostname = "192.168.0.165"
  }
}

スレーブ.conf:

#Akka remote configuration
akka {
  actor {
    stashed-dispatcher {
      mailbox-type = "akka.dispatch.UnboundedDequeBasedMailbox"
    }
    provider = "akka.remote.RemoteActorRefProvider"
  }
  remote {
    log-received-messages = on
    netty.tcp {
      hostname = "192.168.12.108"
      port = 2552
    }
  }
}

リモート アクターはクラス ChronosScheduler によってスポーンされます。

class ChronosScheduler extends Actor {
  def receive = {
    case ChannelIndex(channelIndex) =>
      context.actorOf(FromConfig.props(Props(new ChannelProcessingActor(channelIndex)).withDispatcher("akka.actor.stashed-dispatcher")), "RemoteChannelRoutingActor") ! "msg"
  }
}

ChronosScheduler はオブジェクト ChronosScheduler によって生成されます。

object ChronosScheduler {
  val system =
    ActorSystem("CreationSystem", ConfigFactory.load("master"))

  def sendSpawnCommand = {
    system.actorOf(Props[ChronosScheduler]) ! ChannelIndex(channelIndex)
  }

}

私が持っているエラーはこれです:

play.api.Application$$anon$1: Execution exception[[ConfigurationException: configuration problem while creating [akka://CreationSystem/RemoteChannelRoutingActor] with router dispatcher [akka.actor.default-dispatcher] and mailbox [akka.actor.default-mailbox] and routee dispatcher [akka.actor.default-dispatcher] and mailbox [akka.actor.default-mailbox]]]
Caused by: akka.ConfigurationException: Configuration missing for router [akka://CreationSystem/RemoteChannelRoutingActor] in 'akka.actor.deployment' section.

このエラーに関するヒントを教えてください。これは、クラス ChronosScheduler がオブジェクト ChronosScheduler config.. にアクセスできないために発生すると思いますが、とにかく修正できません。

解決策: 私が抱えていた問題は、master.conf で RemoteChannelRoutingActor を宣言した方法が原因でした:

  " /*/RemoteChannelRoutingActor "

そうでなければなりません:

  "  */RemoteChannelRoutingActor "
4

0 に答える 0