Akka Java API-如何扩展AbstractActor并同时使用Timer和Stash函数

时间:2019-03-03 16:28:01

标签: java akka actor

基本上,我想要一个同时使用计时器隐藏功能的演员。

在Scala中,我们可以执行以下操作-extends AbstractActor with Timer with Stash

在Java中,我发现了两个类-AbstractActorWithTimersAbstractActorWithStash

不幸的是,我无法在Java中扩展这两个类。

使用Java的任何推荐方法?

2 个答案:

答案 0 :(得分:0)

即使我陷入了同样的问题。 我想创建一个状态机,并且需要存储和计时器。

所以在这种情况下,我有两个选择:-

  • 使用AbstractFSMWithStash:-我不喜欢,因为我不确定是否 这是我解决方案中的scalabel

  • 使用类型化的Actor,您可以在其中实际组成计时器和隐藏,请参考下面带有测试用例的代码:-

    import pandas as pd
    import numpy as np
    from sklearn import linear_model
    
    df = pd.read_csv('dtaset.csv')
    df.head()
    
    index followers  likes      urls
      0   14928252   132771   https://url1
      1   14928252   57671    https://url2
      2   14928252   161580   https://url3
      3   14928252   60969    https://url4
      4   14928252   375567   https://url5
    

答案 1 :(得分:0)

最近我偶然发现了这个问题,我们通过在scala项目中创建一个抽象类,然后在Java中对其进行扩展来规避它。

这个scala项目实际上是我们使用akka(经典)的maven-multi-module项目中的一个模块。该项目包含一个没有主体的单一抽象类:

import akka.actor.{AbstractActor, Stash, Timers}

/**
  * An abstract actor that has both stash and timers.
  */
abstract class AbstractActorWithStashAndTimers extends AbstractActor with Stash with Timers {
}

将scala项目编译成一个jar并将该jar放在Java项目类路径中之后,就可以像在akka中使用任何其他抽象actor类一样在Java中使用它:

public class MyConcreteActor extends AbstractActorWithStashAndTimers {
    @Override
    public final Receive createReceive() {
         // you can use stash() and timers() here.
    }
}