Page History
Info |
---|
웹 프레임웍을 위해 Spring Boot를 많이 사용하게 되며 기존 사용하는 자바웹 웹 프레임웍 진영에 있는 Spring Boot에 AKKA를 내장시키는 방법을 알아보겠습니다. 빈을 통해 Akka를 SpringBoot에 내장 시키면서, Spring Boot의 Application Layout도 살펴보겠지만 AKKA 준비과정은 이것보다 훨씬더 간단하지만 SpringBoot에 AKKA라는 외부툴킷을 내재시키고 상호운영하기위해서는 SpringBoot에서 제안하는 표준적인 방법으로 확장시켜야하며 약간의 수고가 필요합니다Spring Boot을 사용하여 기본적인 웹 서비스 개발이 가능하다라고 가정하고 진행을 합니다. |
메이븐설정
Spring Boot 1.5.9 와 Akka 2.4.8 버젼에서 테스트 되었습니다.
...
객체명(TestActor = testActor(카멜) )을 통해 우리가 설계한 액터를 생성할수가 있습니다.
No Format |
---|
ActorRef testActor = system.actorOf(ext.props("testActor"));
//ActorRef(액터참조)는 로컬 어디든
|
액터는 Enpoint 주소 처럼 만들고 접근할수 있습니다. 우리의 로컬로직을 리모트로 확장가능하며 이것은 Rest보다 수백배 빠를수 있습니다.
No Format |
---|
//액터 생성... ActorRef testActor = system.actorOf(ext.props("testActor"),"service1"); //로컬 주소를 통한 액터 선택 ActorSelection testActor2 = system.actorSelection("user/service1"); //원격 주소를 통한 액터 선택 ActorSelection testActorRemote = system.actorSelection("akka.tcp://app@localhost:2552/user/service1"); //참조를 통한 전송 ( 로컬 객체관리에 유리 -메모리 전송 ) testActor.tell("ready spring boot",null); //액터 셀렉션을 통한 전송 testActor2.tell("ready spring boot -again", null); //리모트를 통한 전송 ( 네트워크 전송 ) testActorRemote.tell("ready spring boot -again too", null); |
리모트로 변환하기위해서, 몇가지 설정만 하면됩니다.
이것은 TCP Server를 만들어서 전송기능을 만드는것보다 훨씬 안정적이고 쉬우며
RestAPI를 만들어 전송을 시키는것보다도 쉬우며 성능은 훨씬 좋습니다.
라운드 로빈같은 특정 라우티를 사용할수 있는것은 보너스입니다.
액터의 참조명을 통해, 블락킹이 없는 메시지 처리가 가능합니다.
No Format |
---|
testActor.tell("ready spring boot",null);
|
작동로그확인
No Format |
---|
[INFO] [03/25/2018 20:24:00.055] [main] [Application] Starting up [INFO] [03/25/2018 20:24:00.068] [AkkaTestApp-akka.actor.default-dispatcher-2] [TestActor] Incommessage ready spring boot |
...