在actor中注入控制器

Posted

技术标签:

【中文标题】在actor中注入控制器【英文标题】:Inject controller in actor 【发布时间】:2015-12-01 10:29:35 【问题描述】:

是否可以在 UntypedActor 中注入控制器类? 连接到控制器类的最佳方式是什么?

package actors;

import akka.actor.UntypedActor;
import dispatchers.PushNotificationDispatcher;
import play.Logger;

import javax.inject.Inject;
import java.util.List;

public class PushNotificationActor extends UntypedActor 

    @Inject
    PushNotificationDispatcher dispatcher;

    @Override
    public void onReceive(Object message) throws Exception 
        Logger.debug("PushNotificationActor started");
        dispatcher.createAndSendReminderPushNotification();
        Logger.debug("PushNotificationActor finished");
    


【问题讨论】:

【参考方案1】:

我认为不可能像您写的那样做到这一点...Actor 是封装的类。最好的选择是检查此代码是否有效,但 IMO 它不会...

您可以尝试通过以下参数传递此注入:

Props props2 = Props.create(MyActor.class, your params);

【讨论】:

【参考方案2】:

是的,可以将实例注入到您的 Actor 中。

使用 Play 2.4 它可以工作 out of the box,就像在普通课程中一样注入。

我总是注入到构造函数中,例如这里是 JPAApi:

public class MyActor extends UntypedActor 

  private final JPAApi jpa;

  @Inject
  public MyActor(JPAApi jpa) 
    this.jpa = jpa;
  

  @Override
  public void onReceive(Object msg) throws Exception 
    ...
  

【讨论】:

我尝试实现代码,但在我的情况下,注入的控制器始终为空。你有一些示例代码吗? 我添加了一个例子。希望对您有所帮助。 这很棘手,我也试过你的代码,但是我有一个 NullPointerException 我在github上添加了我的代码github.com/aBuder/play-actor-sample

以上是关于在actor中注入控制器的主要内容,如果未能解决你的问题,请参考以下文章

在 Akka actor 中玩 2.4 依赖注入

高并发解决方案之Actor——第一节

UE4(unreal Engine)中使用蓝图类Actor创建开关门,并使用鼠标和键盘控制开关门

AkkaAkka Actor生命周期

MATLAB教程案例67基于Actor-Critic结构强化学习的车杆平衡控制系统matlab仿真

为啥 $element 在控制器中可用/注入?