일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- play2 강좌
- 파이썬 강좌
- Hyperledger fabric gossip protocol
- 블록체인
- Play2
- akka 강좌
- CORDA
- 스칼라 동시성
- Actor
- 스칼라
- 이더리움
- 플레이프레임워크
- Akka
- 파이썬 데이터분석
- 하이퍼레저 패브릭
- Adapter 패턴
- 파이썬 머신러닝
- 주키퍼
- 그라파나
- Golang
- 파이썬 동시성
- 스칼라 강좌
- 스위프트
- hyperledger fabric
- 엔터프라이즈 블록체인
- 파이썬
- 하이브리드앱
- play 강좌
- 안드로이드 웹뷰
- Play2 로 웹 개발
- Today
- Total
HAMA 블로그
Akka 와 함께 사용하기 아래 내용을 먼저 읽어서 Play 와 Akka 에 대한 관계를 먼저 파악을.. @ In Play 2.0, Play delegated all requests to go through an actor. It heavily depended on Akka's future API and other parts. @ In Play 2.1, with the move of Akka's future API into Scala 2.10, Play started depending less directly on Akka. It gets all it's execution contexts from Akka, and provides integration with Akka, but that's about t..
Play Framework - 원격 Akka 액터에 연결하기원본 : http://qiita.com/visualskyrim/items/350ba0112cd9a95388ff참고:[1] - play - Integrating with Akka[2] - akka - Remoting[3] - google group - Actor system does not listen on public IP, just on localhost[4] - alvin alexander - A simple Akka (actors) remote example디펜던시 추가 build.sbt 에 Akka 원격 라이브러리를 추가한다. libraryDependencies ++= Seq( // ... other libs "com.typesafe.ak..
런타임 의존성 주입 원문: https://www.playframework.com/documentation/2.4.x/ScalaDependencyInjection 요약본입니다. 의존성 주입은 컴포넌트들끼리 서로 독립적이게 하기 위한 방법이다. 서로를 정적으로 포함하기보다는 동적으로 서로에게 주입된다. 플레이는 JSR 330. 기반으로 런타임 의존성 주입을 지원한다. 의존해야하는 특정 컴포넌트를 발견하지 못하면 실행할때까지는 에러를 발견하지 못할것인데 플레이는 컴파일타임 DI 를 또한 지원한다. 플레이에서는 디폴트 의존성 주입 기능으로 Guice 사용한다. 하지만 뭐 다른것을 사용해도 좋다. 디펜던시 선언 컨트롤러나 컴포넌트를 가지고 있을때 다른 컴포넌트를 요구할 수 있는데 이때 @Inject 어노데이션을 ..
- Scala 2.11 기반 - Akka 2.4.11 기반 - Akka 공식문서 참고 InBox이전에 액터끼리의 통신하는 방법으로 (메세지를 전달하는 방법으로) tell (!) 과 ask (?) 를 배웠던 기억이 있을 것이다. tell 은 전형적인 보내고 잊기 방식이고 ask 는 비동기적으로 회신을 받을 수 있는 방식이었다. 그럼 InBox 는 무엇이냐면 또 다른 메세지를 전달 하는 방식인데, 임의의 액터를 하나 만들어서 이 놈이 대신 보내고 받는것이다. 중요한 포인트는 동기적으로 회신을 받는다는 점이다. 즉 타임아웃 시간동안은 멈춘다는것이며 따라서 절대로 receive 핸들러 안에서 사용하면 안된다. 이러한 성질을 이용하여 여러 액터들로 부터 다중 회신을 받거나 주로 watch 메소드 이용하여 다른 액..
- Scala 2.11 기반 - Akka 2.4.11 기반 - akka.io 공식문서 정리만약 Akka IO 를 사용하지 않고, 직접 로우레벨 도구(Selection, Channel, Event, Mutex, Completion Port 등) 를 사용하여 직접 기틀(프레임워크)를 만든다고 할 지라도 이 글은 도움이 될 것입니다. 자신의 통신모듈을 어떻게 조직화하고 ,어떤 것 을 포함해야 할 지에 대한 정보와 힌트를 얻을 수 있을 테니까요. 하지만 웬간하면 바퀴를 또 발명할 필요는 없을 것이고 akka 같은 도구를 이용해서 바퀴에 신경쓰기 보단 바퀴로 수레를 만들지, 기차를 만들지에 대한 상상력의 날개를 펼쳐보는게 어떨까요. 바퀴 만드는 사람에 대한 고마움은 마음 속에 간직하시고..이 글은 공식 문서를 이..
- Scala 2.11 기반 - Akka 2.4.11 기반 - Learning Concurrent Programming in Scala 참고 원격 액터 지금까지는 한 컴퓨터 안의 한 프로세스 안에서 실행되는 내용이었다. 여기서는 기존의 액터를 가지고 분산된 컴퓨터 상에 배치해서 실행해보자. Pingy 와 Pongy 라는 두개의 액터끼리 메세지를 보내고 받는 구현을 그대로 해볼것이다.Sbt 에 의존성 추가libraryDependencies += "com.typesafe.akka" %% "akka-remote" % "2.4.11"별게 없다 akka-remote 의존성만 양쪽에 추가하면 끝.A 컴퓨터 액터 생성 (Pingy)import akka.actor._ import akka.event.Logging im..
- Scala 2.11 기반 - Akka 2.4.11 기반 - Learning Concurrent Programming in Scala 참고 상태머신 (상태에 따른 행동변화 )- 액터가 자신의 상태를 바꿈에 따라 메세지를 처리하는 방식도 달라 진다. - 아카 액터에서 receive 메소드 안에 상태에 따른 여러 행위를 넣는것은 바람직 하지 않다.class CountdownActor extends Actor { var n = 10 def receive = if (n > 0 ) { case "count" => ...do somthing .. n -=1 } else PartialFunction.empty }- n 이 0 보다 클 경우에는 어떤 행동을 하고 - n 이 0 일때는 아무것도 안한다. - receiv..
- Scala 2.11 기반 - Akka 2.4.11 기반 - Learning Concurrent Programming in Scala 참고 액터 관리 (고장/예외 처리하기)모든 액터는 자신의 자식에 대한 관리자 (Supervisor) 역할을 수행한다. 어떤 자식 액터가 어떤 이유로 실패했을때, 부모에게 어떻게 처리 할 지 요청한다. 그때 부모가 처리하는 방법을 관리 정책이라 하면 다음과 같이 이루어진다.재시작한다. (Restart)별 거 아니면 무시하고 계속 실행한다. (Resume) 액터를 영구히 중단시킨다. (Stop)더 상위 액터에게 책임을 넘긴다. (Escalate)심플 예제 ) class Naughty extends Actor { val log = Logging(context.system, t..
- Scala 2.11 기반 - Akka 2.4.11 기반 - Learning Concurrent Programming in Scala 참고 액터 사이의 통신 - 액터 사이에는 위치투명성을 보장 한다. 즉 동일한 방식으로 동일한 메모리 혹은 원격 액터와의 통신가능.말하기(tell)- 기본적인 연산이고 ! 연산자를 사용한다. 비블로킹 연산이다. - Fire and Forget 이다. 즉 메세지를 보낸 다음에 잊어버린다. (제대로 배달된다는 보장무) - 많아야 한 번만 배달하는것을 보장한다. - 메세지 배달 순서를 보장한다. import akka.actor._ import akka.event.Logging import akka.pattern.{ask, pipe} import akka.util.Timeout ..
- Scala 2.11 기반 - Akka 2.4.11 기반 - Learning Concurrent Programming in Scala 참고 액터 생명 주기 import akka.actor.{Actor, ActorRef, ActorSystem, Props} import akka.event.Logging class LifecycleActor extends Actor { val log = Logging(context.system, this) var child: ActorRef = _ def receive = { case num: Double => log.info(s"got a double - $num") case num: Int => log.info(s"got an integer - $num") case l..