java - 如何使用 Akka Java 从非演员类中的接待员访问演员?
问题描述
我有不同的演员作为 Akka 系统的一部分运行,具有不同的类型。如何使用接待员从具有 System 对象的非演员类中找到演员。我没有直接引用或任何方式将引用传递给非参与者类。
解决方案
谢天谢地,我可以使用 Java AKKA 和 Receptionist 提出通用且优雅的解决方案!
private <T> CompletableFuture<ActorRef<T>> findActor(ActorSystem<Void> system, ServiceKey<T> actorKey) {
ActorRef<Command> receptionist = system.receptionist();
Duration askTimeout = Duration.ofSeconds(3);
CompletionStage<Listing> result = AskPattern.ask(
receptionist,
replyTo -> Receptionist.find(actorKey, replyTo),
askTimeout,
system.scheduler());
return result.toCompletableFuture().thenApplyAsync(
(reply) -> {
if (reply != null && reply instanceof Listing) {
return reply.getServiceInstances(actorKey).stream().findFirst().get();
}
return null;
}).exceptionally((Throwable ex) -> {
return null;
});
}
推荐阅读
- r - 如何将summary()的结果变成好看的数据表
- reactjs - 无法在 React 项目中解析 Int 不断获取 NaN
- vba - I want to fill data with javascript in selenium vba
- typescript - Typescript 库中的运行时类型检查 - 值得吗?
- node.js - Online code editor for Azure Bot Framework - Receiving error: destructure property 'applicationID' of 'undefined' or 'null'
- algorithm - 查找一组朋友可以见面的聚会时间段列表?(数据结构/算法挑战)
- javascript - Why does my nodelist contain 0 items when console logged from my JS file?
- php - preventing duplicate row data entries
- java - 如何在没有 Guava CacheBuilder 的情况下为 Simple @Cacheable 设置 TTL
- node.js - 运行 Gulp 任务时节点 Sass 中的分段 11 错误