【问题标题】:akka remote can't findakka 遥控器找不到
【发布时间】:2017-10-06 07:50:58
【问题描述】:

我正在学习 Akka remoting,参考书Learning Akka

使用受限网络,我无法使用 sbt(无法很好地配置代理)。

首先,我使用 application.conf 为 Akka 服务器创建一个项目

akka {
  actor {
    provider = remote
  }
  remote {
    emabled-transports = ["akka.remote.netty.tcp"]
    netty.tcp {
      hostname = "127.0.0.1"
      port = 2552
    }
  }
}

控制台显示

Remoting now listens on addresses: [akka.tcp://akkademy@127.0.0.1:2552]

第二个项目是具有JClient 类的客户端:

public class JClient {

    private static final int TIMEOUT = 2000;
    private final ActorSystem system = ActorSystem.create("LocalSystem");
    private final ActorSelection remoteDb;

    public JClient(String remoteAddress) {
        remoteDb = system.actorSelection("akka.tcp://LocalSystem@" + remoteAddress + "/user/akkademy-db");
    }

    public CompletionStage set(String key, Object value) {
        return toJava(ask(remoteDb, new SetRequest(key, value), TIMEOUT));
    }

    public CompletionStage<Object> get(String key) {
        return toJava(ask(remoteDb, new GetRequest(key), TIMEOUT));
    }    
}

我将值“127.0.0.1:2552”传递给remoteAddress,调用set/get方法,遇到错误:

java.util.concurrent.ExecutionException: akka.pattern.AskTimeoutException: Ask timed out on [ActorSelection[Anchor(akka://akkademy/deadLetters), Path(/user/.*)]] after [2000 ms]. Sender[null] sent message of type "javah.GetRequest".

【问题讨论】:

  • 我不知道为什么我的 remoteURI 被转换为 akka://akkademy/deadletters

标签: java akka


【解决方案1】:

您获取远程参与者ActorSelection 的客户端代码不正确。代替"LocalSystem",这是客户端的actor系统的名称,使用"akkademy",服务器的actor系统的名称。将JClient 构造函数更改为以下内容:

public JClient(String remoteAddress) {
    remoteDb = system.actorSelection("akka.tcp://akkademy@" + remoteAddress + "/user/akkademy-db");
}

【讨论】:

    【解决方案2】:

    actorSelection 中,选择器应该是格式为akka.tcp://${remoteActorSystemName}@${remoteAddress}/user/$actorPath 的字符串。在您发布的 sn-p 中,看起来您使用 LocalSystem 作为 ${remoteActorSystemName} 而不是远程参与者系统名称。

    如果将其切换到远程工作,请告诉我,如果没有,您可以发布您正在使用的完整代码或链接吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2014-03-12
      相关资源
      最近更新 更多