java - Akka 扩展有什么好处?

标签 java akka

我对 Akka 非常陌生,并试图了解如何处理依赖注入(inject)。我遇到了这个examle ,这让我了解了 Akka 扩展,现在我试图了解它与简单的静态方法调用有何不同。 Akka 教程中关于扩展的部分有这样的例子:

public class CountExtensionImpl implements Extension {

    private final AtomicLong counter = new AtomicLong(0);

    public long increment() {
        return counter.incrementAndGet();
    }
}

public class CountExtension extends AbstractExtensionId<CountExtensionImpl> implements ExtensionIdProvider {

    public static final CountExtension EXTENSION = new CountExtension();

    private CountExtension() {

    }

    @Override
    public CountExtensionImpl createExtension(ExtendedActorSystem system) {
        return new CountExtensionImpl();
    }

    @Override
    public ExtensionId<? extends Extension> lookup() {
        return EXTENSION;
    }
}

public class MyActor extends UntypedActor{


    @Override
    public void onReceive(Object message) throws Exception {
        System.out.println(CountExtension.EXTENSION.get(getContext().system()).increment());

    }
}

但我不明白与简单的单例或静态方法相比有什么优势?例如

public class MyActor extends UntypedActor{

    @Override
    public void onReceive(Object message) throws Exception {
        Counter.increment();

    }
}

最佳答案

Akka 扩展绑定(bind)到 ActorSystem,因此是每个系统的单例,而不是全局单例。

关于java - Akka 扩展有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35960798/

相关文章:

java - 在src目录下写java资源

scala - 如何使用 akka 连接到 Unix 套接字?

scala - Play Akka 记录器不向控制台输出调试消息

scala - 在运行时动态创建 Akka 流

javascript - JavaScript 文件中反射(reflect)的 XSS 跨站脚本

java - @interface 是什么时候在 java 中引入的?

java - DEBUG/SntpClient(70) : request time failed: java.net.SocketException:Android 上的协议(protocol)不支持地址族

scala - Akka 。如何知道所有 child Actor 都完成了他们的工作

scala - 何时设计可扩展性?

java - jMeter 在扫描仪读取时挂起