上一篇简单介绍了一下akka的Actor创建、消息发送接收。但都仅限于本地的消息传输。接下来尝试一下akka的远程访问的实现。
AkkaService.java
package com.yonder.akka.test.remote;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import scala.concurrent.Await;
import scala.concurrent.Future;
import scala.concurrent.duration.Duration;
import akka.actor.ActorRef;
import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
import akka.actor.Props;
import akka.pattern.Patterns;
import akka.util.Timeout;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
/**
* akka系统服务类
*/
public class AkkaService {
private static final Logger logger = LoggerFactory.getLogger(AkkaService.class);
private AkkaService(int port, String serverName, String actorName) {
this.host = getAddress();
this.port = port;
this.serverName = serverName;
this.actorName = actorName;
}
private ActorSystem actorSystem;
private String serverName;
private String actorName;
private String host;
private int port;
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getActorName() {
return actorName;
}
public void setActorName(String actorName) {
this.actorName = actorName;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
/**
* 获取akka系统服务对象
* @param port 绑定端口
* @param serverName 服务名称
* @param actorName 接收消息Actor名称
* @return
*/
public static AkkaService getInstance(int port, String serverName, String actorName){
return new AkkaService(port, serverName, actorName);
}
p