Акка актер последовательность - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть задача, для которой требуется пул потоков, и каждая задача должна выполняться в том же порядке, что и вызов.Таким образом, я использовал актера akka, но это не сработало, как я ожидал ,, тогда я сделал тест.Вот мой код:

  @Test
  def actorTest1(): Unit = {
    for (i <- 1 to 300) {
      val actorRef: ActorRef = actorFactory.createActor("myActor")
      actorRef ! Tell(i)
    }
    Thread.sleep(6000000)
  }

  @Test
  def actorTest2(): Unit = {
    val actorRef: ActorRef = actorFactory.createActor("myActor")
    for (i <- 1 to 300) {
      actorRef ! Tell(i)
    }
    Thread.sleep(6000000)
  }

case tell: Tell => {
  Thread.Sleep(900)
  log.debug("tell: " + tell.i)
}

Журнал test1, его последовательность не такая, как 1, 2, 3, 4, 5 ..., с другим потоком;case2 имеет значение 1, 2, 3, 4, 5 ..., но test2 всегда использует один и тот же поток.Я хочу, чтобы это работало, поскольку журнал - последовательность с другим потоком, как:

2018-11-22 20:13:19.280 DEBUG 14176 --- [thread-1]       : tell: 70
2018-11-22 20:13:19.857 DEBUG 14176 --- [thread-2]       : tell: 71
2018-11-22 20:13:20.362 DEBUG 14176 --- [thread-3]       : tell: 72
2018-11-22 20:13:20.823 DEBUG 14176 --- [thread-4]       : tell: 73
...