Page History
...
No Format |
---|
//메이븐 설정추가 <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-remote_2.11<12</artifactId> <version>${akka.version}</version> </dependency> //application.conf 설정 추가 akka { actor { provider = remote } remote { enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { hostname = "0.0.0.0" port = 2552 } } } // 로컬로 설계된 메시지,직렬화 상속받기 public class SomeMessage implements Serializable { ....} |
...
Code Block | ||||
---|---|---|---|---|
| ||||
public class TestActor extends UntypedActor UntypedAbstractActor{ private final LoggingAdapter log = Logging .getLogger(getContext().system(), "TestActor"); @Override public void onReceive(Object message) throws Exception { if(message instanceof String) { //String뿐만 아니라 모든 Java객체 통신가능 log.info("Incommessage {}", message); sender().tell("너의 메시지에 응답을함", ActorRef.noSender()); }else { log.info("Unhandle Message {}", message); } } } //service1 이름으로 액터의 엔드포인트를 생성했습니다. ActorRef testActor = system.actorOf(ext.props("testActor"),"service1"); //Service1이란 이름으로 TestActor를 생성함 |
...
Code Block | ||||
---|---|---|---|---|
| ||||
//엔드포인트를 통한 액터선택자 ActorSelection testActorRemote = system.actorSelection("akka.tcp://app@localhost:2552/user/service1"); //리모트를 통한 전송 testActorRemote.tell("발사후망각-응답필요없음",ActorRef.noSender() ); //ActorRef에 수신녀석을 지정하여 어떠한 결과를 받을수도 있습니다. //응답이 동기적으로 필요한경우 CompletableFuture<Object> future1 = ask(testActorRemote, "응답하라 1979", 1000).toCompletableFuture(); //너의 메시지에 응답을함 이란 메시지를 받음 -이해를 돕기위해 동기처리로 전환 String result = String.valueOf(future1.get()); |
Expand | ||||
---|---|---|---|---|
| 2018-05-05 13:54:46,324 INFO - Started CachedbApplication in 5.808 seconds (JVM running for 6.798)||||
[INFO] [05/05/2018 1315:5415:4729.232433] [mainAkkaTestApp-akka.actor.default-dispatcher-5] [Application] Starting upTestActor] Incommessage ready spring boot [INFO] [05/05/2018 1315:5415:4729.254435] [AkkaTestApp-akka.actor.default-dispatcher-25] [TestActor] Incommessage ready spring boot -again |
...