+
+ public String getRemoteActorPath(final String shardName,
+ final String localPathOfRemoteActor) {
+ final String path = findPrimaryPath(shardName);
+
+ LoadingCache<String, String> graphs = CacheBuilder.newBuilder()
+ .expireAfterAccess(2, TimeUnit.SECONDS)
+ .build(
+ new CacheLoader<String, String>() {
+ public String load(String key) {
+ return resolvePath(path, localPathOfRemoteActor);
+ }
+ }
+ );
+ return graphs.getUnchecked(localPathOfRemoteActor);
+ }
+
+ public String resolvePath(final String primaryPath,
+ final String localPathOfRemoteActor) {
+ StringBuilder builder = new StringBuilder();
+ String[] primaryPathElements = primaryPath.split("/");
+ builder.append(primaryPathElements[0]).append("//")
+ .append(primaryPathElements[1]).append(primaryPathElements[2]);
+ String[] remotePathElements = localPathOfRemoteActor.split("/");
+ for (int i = 3; i < remotePathElements.length; i++) {
+ builder.append("/").append(remotePathElements[i]);
+ }
+
+ return builder.toString();
+
+ }
+
+ public ActorPath actorFor(String path){
+ return actorSystem.actorFor(path).path();
+ }
+
+ public String getCurrentMemberName(){
+ return clusterWrapper.getCurrentMemberName();
+ }
+