【问题标题】:Akka actor resizer is not creating the instancesAkka 演员调整器没有创建实例
【发布时间】:2018-01-13 03:45:28
【问题描述】:

我正在尝试通过 round-robin-pool 在 akka 路由中使用 resizer。但它不是创建实例。它正在处理我在 low-bound 中提到的实例。我正在关注 akka 2.5.3 版的文档。

我的配置:

akka.actor.deployment {
/round-robin-resizer {
router = round-robin-pool
resizer {
  lower-bound = 4
  upper-bound = 30
  pressure-threshold = 0
  rampup-rate = 0.5
  messages-per-resize = 1
}

}

演员类:

return receiveBuilder()
    .match(Integer.class, msg -> {
        System.out.println("Message :  " + msg + " Thread id : " + Thread.currentThread().getId());
        Thread.sleep(5000);
    })
    .matchAny(msg -> {
         System.out.println("Error Message :  " + msg + " Thread id : " + Thread.currentThread().getId());
    }).build();

}

演员创作:

ActorRef roundRobin = system.actorOf(FromConfig.getInstance().props(Props.create(RoutingActor.class)), "round-robin-resizer");
    for (int i = 0; i < 15; i++) {
        roundRobin.tell(i, ActorRef.noSender());
    }

输出:

Message : 2  Thread id : 18
Message : 1  Thread id : 16
Message : 0  Thread id : 15
Message : 3  Thread id : 17
Message : 7  Thread id : 17
Message : 4  Thread id : 15
Message : 6  Thread id : 18
Message : 5  Thread id : 16
Message : 11  Thread id : 17
Message : 9  Thread id : 16
Message : 10  Thread id : 18
Message : 8  Thread id : 15
Message : 13  Thread id : 16
Message : 14  Thread id : 18
Message : 12  Thread id : 15

每 4 个结果后等待 5 秒以完成之前实例的工作。

查看线程 ID。对于演员实例的每一次创建,我都会让我的线程休眠一段时间。当时应该在不同的线程上分配新实例。但是这个过程一直运行到前三个实例。之后,它不会根据调整大小创建新实例。它正在按照循环池的正常流程附加消息。

【问题讨论】:

标签: java akka actor akka-actor


【解决方案1】:

您对线程 ID 和实际的 actor 实例感到困惑。 Actor 实例的数量与线程的数量不匹配。请在其他类似问题中参考此答案:Akka ConsistentHashingRoutingLogic not routing to the same dispatcher thread consistently

【讨论】:

  • 我试着用你的答案打印演员实例的地址路径。但我仍然得到同样的东西。它只在 4 个实例上运行。 @hveiga Message : 1 Path : akka://firstActor/user/round-robin-resizer/$b Message : 2 Path : akka://firstActor/user/round-robin-resizer/$c Message : 0 Path : akka://firstActor/user/round-robin-resizer/$a Message : 3 Path : akka://firstActor/user/round-robin-resizer/$d Message : 4 Path : akka://firstActor/user/round-robin-resizer/$a Message : 6 Path : akka://firstActor/user/round-robin-resizer/$c
  • 你能给我看一个简单的例子来验证使用调整大小的循环池。 @hveiga
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多