当前位置: 首页 > 知识库问答 >
问题:

Akka Java-动态创建递归子角色?

尹臻
2023-03-14

我的理解是,在任何给定的时间点上,一个线程只能执行onRecture。

假设我有一个非类型的演员,定义如下:

import akka.actor.ActorRef;
import akka.actor.Props;
import akka.actor.UntypedActor;


public class ExampleActor extends UntypedActor {

     private ActorRef databaseActor;


    @Override
    public void preStart() {
       ActorRef databaseActor = getContext().system().actorOf(Props.create(DatabaseActor.class));
    }


    @Override
    public void onReceive(Object message) throws Exception {

        if (message.equals("start")) {
            // spawn a child actor of myself!
            ActorRef child = getContext().actorOf(Props.create(ExampleActor.class));
            databaseActor.tell("fetch", child);
        }

        if (message.equals("dbresponse")) {
           // just log the repsonse here!
        }

        if (message.equals("something else")) {
           // possibly mutate state
        }


   }
}

我基本上想使用Akka而不使用期货。同时,我希望我的演员们不要尽可能多地阻拦。在我的onReceive中生成递归子角色,单独处理来自其他角色的特定消息,可以吗?

本质上,在我的“if(message.equals(“dbresponse”)”中,我只想记录一个DB响应,而不是在ExampleActor中改变状态。

这种方法有效吗?这样即兴创作演员的后果是什么?

共有1个答案

韩照
2023-03-14

您做得完全正确,这就是Actor模型预测Actor交互处理的方式。使用ask模式所做的事情实际上是相同的(但会产生一种优化形式的单回复参与者),因此如果您不想使用Futures,这是一种选择退出的方式。

 类似资料:
  • 问题内容: 我正在使用awesomium制作游戏中的用户界面,有时游戏会加载并执行一段JavaScript,以创建任意新的UI元素。例如 效果很好,当我想创建一些更高级的UI元素(特别是使用angular)时,就会出现问题。例如: 毫不奇怪,这不会创建新的角度视图。它只是将该html添加到文档中,而从未绑定到ChatBoxControl。 我如何才能在这里实现自己的目标? 问题答案: 您应该$ c

  • 问题内容: 我正在尝试做的是动态创建子组件,这些子组件应该注入到父组件中。例如父组件是包含共享的内容为所有课程如如按钮,和其他东西。根据路线参数,应将作为 子组件的 课程内容动态注入到父组件中。子组件(课程内容)的HTML定义为外部某处的纯字符串,它可以是类似以下内容的对象: 通过在 父组件 模板中进行以下操作可以轻松解决问题。 在每次更改路线参数时,父组件的属性都会更改(内容(新模板)将从对象中

  • 问题内容: 我需要编写一个称为like的方法。我们需要创建一个迭代方法和一个递归方法(没有任何迭代)。输出需要如下所示: 这段代码可用于迭代,但是我无法使其适应递归。 我应该注意,您不能使用任何类级别的变量或任何外部方法。 问题答案: 请注意,在迭代方法中,您有两个计数器:第一个是您所处的行,第二个是您所处的行的位置。您可以创建一个采用两个参数并将其用作嵌套计数器和的递归函数。在递减x直到其达到0

  • 问题内容: 我需要使用带有变量名的动态名称创建用户 例子 : 以下代码给出了语法错误。 我需要为创建的用户分配一个角色。 问题答案: 您不能将变量用作对象名称。你可以作弊 要么构建动态SQL,要么确保使用QUOTENAME防止SQL注入。

  • 问题内容: 我正在尝试使用Java中的递归创建Palindrome程序,但是我被困住了,这是我到目前为止所拥有的: 谁能提供解决我问题的方法? 问题答案: 在这里,我为您粘贴代码: 但是,我强烈建议您了解其工作原理, 从您的问题出发,您是完全不可读的。 尝试理解此代码。 阅读代码中的注释

  • 假设N是根号,三者将创建N-1,N-2,N-3的左中右节点。 EX: 等。 我的 TreeNode 类具有以下变量: 每当我构造一个整数大于 28 的树时,我都会得到一个 OutOfMemoryError。我的递归方法是效率低下还是很自然?谢谢!