akka 2.2.0 Scala 2.11 "메시지가 전달되지 않았습니다"-Thread.sleep (50)을 사용하지 않는 경우

마이 투 센트

저는 Scala와 Akka를 처음 접했지만 간단한 시나리오가 있습니다. URL 목록을 가져 와서 각 URL을 http GET 요청을 할 새 액터에 메시지로 보내려고합니다. 16 개의 URL 목록만으로는 약 40-65 %의 성공률을 얻었으며 다른 사람들은 "메시지가 배달되지 않았습니다"라는 데드-레터를 받았습니다. 그러나 액터를 만들기 전에 Thread.sleep (50)을 넣으면 데드-레터 미스가 발생하지 않습니다. 참고 : HTTP Get은 요소 일 수도 있고 아닐 수도있는 스칼라 클래스가 아닌 Java 클래스를 사용합니다. 아래 코드 예제를 참조하십시오 ... Akka가 메시지를 보장하지 않는다는 것을 알고 있지만이 성공률이 옳지 않은 것 같습니다. 잘못하고있는 것 같습니다. 어떤 조언을 해주셔서 감사합니다.

  def ParallelTest(urls: List[String]): String =   {
     val system = ActorSystem("HelloSystem")

     var cnt: Int = 0
     for (item <- urls){
       Thread.sleep(50)
       createActor(system, "helloactor" + cnt, item)
       cnt += 1
       /*
       historical example
       helloActor ! "hello"
       helloActor ! "hello"
       helloActor ! "Buenos dias"
       */
      }
     system.shutdown

     println("parallel done");
     "done"   
   }

  def createActor(actorSystem: ActorSystem, actorName: String, urlItem: String) = {
    val helloActor = actorSystem.actorOf(Props[HelloActor], name = actorName)
    helloActor ! UrlTransport(urlItem)
  }
Sberry

배우가 언제 끝났는지 알 수 있도록 매니저를 두는 등 이와 같은 일을하는 것을 고려할 수 있습니다.

class HelloManager(urls: List[String]) extends Actor {

    var completed = 0
    def remaining = urls.size - completed

    def receive: Receive = {
        case StartSystem => startRequests
        case RequestComplete => handleComplete

    }

    def startRequests(): Unit = {
        for ((url, i) <- urls.zipWithIndex) {
            val helloActor = context.actorOf(Props[HelloActor], name = s"helloActor$i")
            helloActor ! UrlTransport(url)
        }
    }  

    def handleComplete(): Unit = {
        completed += 1
        if (remaining == 0) 
            // do something like
            // context.stop(self)
    }
}

그런 다음 sender ! RequestComplete작업이 끝나면 HelloActor가 필요합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Google에 2 단계 인증을 설정하지만 공개 키를 사용하지 않는 경우에만

분류에서Dev

Web2py에서 layout.html을 사용하지 않는 경우 Ajax를 뷰에 포함하는 방법

분류에서Dev

ngIf가 작동하지 않는 경우 확장 클래스의 속성을 사용하는 Angular 2

분류에서Dev

2 개의 배열을 결합하고 중복되지 않는 경우 0으로 채 웁니다.

분류에서Dev

Scala에서 Option을 사용하는 경우와 사용하지 않는 경우

분류에서Dev

Conv2d ()에서 패딩을 사용하는 경우 및 ReflectionPad2d () Pytorch를 수행하는 경우

분류에서Dev

Angular 2 컨트롤을 사용하는 경우 [] 및 FormControl에서 get ()을 사용하는 경우

분류에서Dev

C ++ 11 std :: this_thread-sleep_until ()을 취소하는 방법?

분류에서Dev

OpenVPN을 사용하는 경우 공급자가 p2p 트래픽을 감지 할 수 있습니까?

분류에서Dev

Scala 수집 방법을 사용하여 [0,0,0,1,1,1,1,0,0,1,1] 목록을 [3,4,2,2]로 변환 할 수 있습니다.

분류에서Dev

Symfony2는 로그인하지 않은 경우 / admin / *을 / admin / login으로 리디렉션합니다 (또는 FOSUserBundle 사용?).

분류에서Dev

7을 더하고 아직 0이 아닌 경우 2를 빼는 함수를 작성하는 방법

분류에서Dev

변수가 0이지만, 소거 된 행는 NA이고, 2 열은 R의 NA와 동일한 경우 않을 때는

분류에서Dev

Angular 2-사용자 지정 유효성 검사를 사용하는 경우 왜 ngForm을 사용해야합니까?

분류에서Dev

이 경우 .toFixed (2)가 작동하지 않는 이유

분류에서Dev

* ngIonic 2에서 바인딩이 작동하지 않는 경우

분류에서Dev

특정 경우에 정수를 반환하지 않는 경우 함수에서 return 0 대신 return 1, return 2 또는 다른 정수를 사용할 수 있습니까?

분류에서Dev

사용자 2를 팔로우하지 않는 모든 사용자 확보

분류에서Dev

<s : file>은 Struts 2를 사용하여 유효성 검사가 실패한 경우 값을 유지하지 않습니다.

분류에서Dev

체크하지 않은 체크 박스 설정 방법 1 체크 박스 2를 체크하고 체크하지 않은 체크 박스를 설정 한 경우 2 스크립트를 사용하여 체크 박스 1을 체크 한 경우?

분류에서Dev

Angular 2 라우팅-사용되지 않음 : CanActivate를 감지하는 방법?

분류에서Dev

Vue 2 v- 입력 변경 후 작동하지 않는 경우

분류에서Dev

Sys.sleep ()을 사용하여 2 분마다 행 단위로 거리를 계산하는 루프

분류에서Dev

2 초 동안 사용자 상호 작용을 허용하지 않는 방법

분류에서Dev

LINQ2SQL은 null로 확인하는 경우 행을 반환하지 않습니다.

분류에서Dev

사용자가 한 역할에 있지 않거나 사용자가 다른 역할에없는 경우 Razor 2

분류에서Dev

우리가 SLF4J API를 함께 사용하는 경우 우리는 log4j2의 모든 기능을 사용할 수 있습니까?

분류에서Dev

직원 [0], 직원 [1], 직원 [2]을 사용하는 경우 mongodb가 직원 [i]를 사용하는 for 루프와 다르게 출력하는 이유는 무엇입니까?

분류에서Dev

terraform을 사용하여 vpc 아래에 두 개의 ec2 인스턴스를 생성하려는 경우

Related 관련 기사

  1. 1

    Google에 2 단계 인증을 설정하지만 공개 키를 사용하지 않는 경우에만

  2. 2

    Web2py에서 layout.html을 사용하지 않는 경우 Ajax를 뷰에 포함하는 방법

  3. 3

    ngIf가 작동하지 않는 경우 확장 클래스의 속성을 사용하는 Angular 2

  4. 4

    2 개의 배열을 결합하고 중복되지 않는 경우 0으로 채 웁니다.

  5. 5

    Scala에서 Option을 사용하는 경우와 사용하지 않는 경우

  6. 6

    Conv2d ()에서 패딩을 사용하는 경우 및 ReflectionPad2d () Pytorch를 수행하는 경우

  7. 7

    Angular 2 컨트롤을 사용하는 경우 [] 및 FormControl에서 get ()을 사용하는 경우

  8. 8

    C ++ 11 std :: this_thread-sleep_until ()을 취소하는 방법?

  9. 9

    OpenVPN을 사용하는 경우 공급자가 p2p 트래픽을 감지 할 수 있습니까?

  10. 10

    Scala 수집 방법을 사용하여 [0,0,0,1,1,1,1,0,0,1,1] 목록을 [3,4,2,2]로 변환 할 수 있습니다.

  11. 11

    Symfony2는 로그인하지 않은 경우 / admin / *을 / admin / login으로 리디렉션합니다 (또는 FOSUserBundle 사용?).

  12. 12

    7을 더하고 아직 0이 아닌 경우 2를 빼는 함수를 작성하는 방법

  13. 13

    변수가 0이지만, 소거 된 행는 NA이고, 2 열은 R의 NA와 동일한 경우 않을 때는

  14. 14

    Angular 2-사용자 지정 유효성 검사를 사용하는 경우 왜 ngForm을 사용해야합니까?

  15. 15

    이 경우 .toFixed (2)가 작동하지 않는 이유

  16. 16

    * ngIonic 2에서 바인딩이 작동하지 않는 경우

  17. 17

    특정 경우에 정수를 반환하지 않는 경우 함수에서 return 0 대신 return 1, return 2 또는 다른 정수를 사용할 수 있습니까?

  18. 18

    사용자 2를 팔로우하지 않는 모든 사용자 확보

  19. 19

    <s : file>은 Struts 2를 사용하여 유효성 검사가 실패한 경우 값을 유지하지 않습니다.

  20. 20

    체크하지 않은 체크 박스 설정 방법 1 체크 박스 2를 체크하고 체크하지 않은 체크 박스를 설정 한 경우 2 스크립트를 사용하여 체크 박스 1을 체크 한 경우?

  21. 21

    Angular 2 라우팅-사용되지 않음 : CanActivate를 감지하는 방법?

  22. 22

    Vue 2 v- 입력 변경 후 작동하지 않는 경우

  23. 23

    Sys.sleep ()을 사용하여 2 분마다 행 단위로 거리를 계산하는 루프

  24. 24

    2 초 동안 사용자 상호 작용을 허용하지 않는 방법

  25. 25

    LINQ2SQL은 null로 확인하는 경우 행을 반환하지 않습니다.

  26. 26

    사용자가 한 역할에 있지 않거나 사용자가 다른 역할에없는 경우 Razor 2

  27. 27

    우리가 SLF4J API를 함께 사용하는 경우 우리는 log4j2의 모든 기능을 사용할 수 있습니까?

  28. 28

    직원 [0], 직원 [1], 직원 [2]을 사용하는 경우 mongodb가 직원 [i]를 사용하는 for 루프와 다르게 출력하는 이유는 무엇입니까?

  29. 29

    terraform을 사용하여 vpc 아래에 두 개의 ec2 인스턴스를 생성하려는 경우

뜨겁다태그

보관