serviceLoader = ServiceLoader.load(IActorProvider.class);
+ for (IActorProvider service : serviceLoader) {
+ service.createActor(system);
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActor.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActor.java
index cc16d5a24..0047d9f84 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActor.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActor.java
@@ -1,13 +1,14 @@
package com.a.eye.skywalking.collector.cluster.manager;
import akka.actor.Terminated;
-import akka.actor.UntypedActor;
+import com.a.eye.skywalking.collector.cluster.base.AbstractUntypedActor;
+import com.a.eye.skywalking.collector.cluster.base.IActorProvider;
import com.a.eye.skywalking.collector.cluster.message.ActorRegisterMessage;
/**
* Created by Administrator on 2017/2/21 0021.
*/
-public class ActorManagerActor extends UntypedActor {
+public class ActorManagerActor extends AbstractUntypedActor {
@Override
public void onReceive(Object message) throws Throwable {
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActorFactory.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActorFactory.java
new file mode 100644
index 000000000..a3d46e32b
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActorFactory.java
@@ -0,0 +1,29 @@
+package com.a.eye.skywalking.collector.cluster.manager;
+
+import akka.actor.ActorSystem;
+import akka.actor.Props;
+import com.a.eye.skywalking.collector.cluster.base.IActorProvider;
+import com.a.eye.skywalking.collector.cluster.config.CollectorConfig;
+
+/**
+ * @author pengys5
+ */
+public class ActorManagerActorFactory implements IActorProvider {
+
+ @Override
+ public String actorName() {
+ return "ActorManagerActor";
+ }
+
+ @Override
+ public void createActor(ActorSystem system) {
+ for (int i = 1; i <= CollectorConfig.Collector.Actor.ActorManagerActor_Num; i++) {
+ actorOf(system, actorName() + "_" + i);
+ }
+ }
+
+ @Override
+ public void actorOf(ActorSystem system, String actorInClusterName) {
+ system.actorOf(Props.create(ActorManagerActor.class), actorInClusterName);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/producer/TraceProducerApp.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/producer/TraceProducerApp.java
index 86be204ca..f996b43f3 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/producer/TraceProducerApp.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/producer/TraceProducerApp.java
@@ -22,7 +22,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import static akka.pattern.Patterns.ask;
/**
- * {@link TraceProducerApp} is a producer for trace agent to send @link TraceSegment.
+ * {@link TraceProducerApp} is a producer for trace agent to send {@link TraceSegment}.
*
* Created by pengys5 on 2017/2/17.
*/
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.cluster.base.IActorProvider b/skywalking-collector/skywalking-collector-cluster/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.cluster.base.IActorProvider
new file mode 100644
index 000000000..4a49d7b57
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.cluster.base.IActorProvider
@@ -0,0 +1 @@
+com.a.eye.skywalking.collector.cluster.manager.ActorManagerActorFactory
\ No newline at end of file
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/ActorCreatorTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/ActorCreatorTestCase.java
new file mode 100644
index 000000000..aa2658c36
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/ActorCreatorTestCase.java
@@ -0,0 +1,22 @@
+package com.a.eye.skywalking.collector.cluster;
+
+import akka.actor.ActorSystem;
+import akka.actor.Props;
+import com.a.eye.skywalking.collector.cluster.manager.ActorCreator;
+import com.a.eye.skywalking.collector.cluster.manager.ActorManagerActor;
+import org.junit.Test;
+
+import static org.mockito.Mockito.*;
+
+/**
+ * @author pengys5
+ */
+public class ActorCreatorTestCase {
+
+ @Test
+ public void testCreate() {
+ ActorSystem system = mock(ActorSystem.class);
+// ActorCreator.INSTANCE.create(system, ActorManagerActor.class, 1);
+// verify(system).actorOf(Props.create(ActorManagerActor.class), "ActorManagerActor");
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/ActorProviderTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/ActorProviderTestCase.java
new file mode 100644
index 000000000..8516fce44
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/ActorProviderTestCase.java
@@ -0,0 +1,27 @@
+package com.a.eye.skywalking.collector.cluster;
+
+import akka.actor.ActorSystem;
+import com.a.eye.skywalking.collector.cluster.manager.ActorManagerActorFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * @author pengys5
+ */
+public class ActorProviderTestCase {
+
+ @Test
+ public void testActorName() {
+ ActorManagerActorFactory factory = new ActorManagerActorFactory();
+ String actorName = factory.actorName();
+ Assert.assertEquals("ActorManagerActor", actorName);
+ }
+
+ @Test
+ public void testCreateActor() {
+ ActorSystem system = Mockito.mock(ActorSystem.class);
+ ActorManagerActorFactory factory = new ActorManagerActorFactory();
+ factory.createActor(system);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/CollectorConfigTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/CollectorConfigTestCase.java
index dfd8be8f4..560bb76f1 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/CollectorConfigTestCase.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/cluster/CollectorConfigTestCase.java
@@ -7,8 +7,6 @@ import com.typesafe.config.Config;
import org.junit.Assert;
import org.junit.Test;
-import java.util.ArrayList;
-
/**
* Created by pengys5 on 2017/2/22 0022.
*/
diff --git a/skywalking-collector/skywalking-collector-worker/pom.xml b/skywalking-collector/skywalking-collector-worker/pom.xml
index fff11e262..0f03e8852 100644
--- a/skywalking-collector/skywalking-collector-worker/pom.xml
+++ b/skywalking-collector/skywalking-collector-worker/pom.xml
@@ -11,5 +11,11 @@
skywalking-collector-worker
-
+
+
+ com.a.eye
+ skywalking-collector-cluster
+ ${project.version}
+
+
\ No newline at end of file
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
new file mode 100644
index 000000000..59920b3bc
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
@@ -0,0 +1,17 @@
+package com.a.eye.skywalking.collector.worker;
+
+import akka.actor.ActorSystem;
+import akka.actor.Props;
+import com.a.eye.skywalking.collector.cluster.Const;
+import com.a.eye.skywalking.collector.cluster.consumer.TraceConsumerActor;
+
+/**
+ * @author pengys5
+ */
+public class CollectorBootStartUp {
+
+ public static void main(String[] args) {
+// ActorSystem system = ActorSystem.create("ClusterSystem", config);
+// system.actorOf(Props.create(TraceConsumerActor.class), Const.Trace_Consumer_Role);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/indicator/ApplicationDiscoverActor.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/indicator/ApplicationDiscoverActor.java
new file mode 100644
index 000000000..51eef9cef
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/indicator/ApplicationDiscoverActor.java
@@ -0,0 +1,22 @@
+package com.a.eye.skywalking.collector.worker.indicator;
+
+import akka.actor.UntypedActor;
+import com.a.eye.skywalking.collector.cluster.base.AbstractUntypedActor;
+
+/**
+ * @author pengys5
+ */
+public class ApplicationDiscoverActor extends AbstractUntypedActor {
+
+ public static final String ActorName = "ApplicationDiscoverActor";
+
+ @Override
+ public String actorName() {
+ return ActorName;
+ }
+
+ @Override
+ public void onReceive(Object message) throws Throwable {
+
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/indicator/TraceSegmentRelationActor.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/indicator/TraceSegmentRelationActor.java
new file mode 100644
index 000000000..dd93fe222
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/indicator/TraceSegmentRelationActor.java
@@ -0,0 +1,13 @@
+package com.a.eye.skywalking.collector.worker.indicator;
+
+import akka.actor.UntypedActor;
+
+/**
+ * @author pengys5
+ */
+public class TraceSegmentRelationActor extends UntypedActor{
+ @Override
+ public void onReceive(Object message) throws Throwable {
+
+ }
+}