java - Akka actor resizer 没有创建实例

标签 java akka actor akka-actor

我正在尝试在 akka 路由中使用 resizerround-robin-pool 。但它并没有创建实例。它正在处理我在下限中提到的实例。我正在关注 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
}

}

Actor 类别:

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();

}

创建 Actor :

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。对于每次创建 Actor 实例,我都会让我的线程 hibernate 一段时间。此时新实例应该分配在不同的线程上。但这个过程一直运行到前三个实例。之后,它不会根据调整大小创建新实例。它按照循环池的正常流程附加消息。

最佳答案

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

关于java - Akka actor resizer 没有创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45519749/

相关文章:

java - Akka HTTP,编码 POJO

Akka TestProbe 来测试 context.watch()/终止处理

scala - 如何设计时钟驱动的多智能体模拟

Scala 主要参与者不匹配 react block 中的案例

scala - 使用 Scala 进行 Akka actors 单元测试

java - 排序数组类不起作用

java - Mockito 验证模拟调用中对模拟方法的调用

java - Eclipse 抑制编译器错误 - 是否有可能的解决方法?

java - Enum 是 JVM 范围的单例吗?

scala - 如何在 Play 中重复请求!框架2.1?