2016-07-21 76 views

回答

1

这只是一种创建插件的方式,可以扩展Akka的核心功能。当你想创建一个通用库时,你可以使用它来应用于许多Akka项目。 Akka的大部分发行都是作为扩展来实现的。当你开始在Akka中使用非平凡功能时,毫无疑问你会发现你至少会使用扩展模式来访问运行时数据/实例以使用扩展。

Akka Cluster的一个示例是distributed publish and subscribe。要参与发布/订阅的群集中的每个节点都必须正好运行一个mediator,该负责在整个群集中分发消息。所以mediator是本地单身人士。该框架通过初始化它并将其存储在其扩展实例中来管理应用程序的单例,该实例通过将其应用于参与者系统来检索。

0

扩展就像一个单例,但绑定到actor系统的生命周期,而不是JVM,这意味着它不会在测试中的actor系统之间泄漏,例如全局单例。

一个常见且易于理解的用例是将配置解析为更多应用程序特定类型的自己类的安全结构,而不是直接从配置API通过键访问配置。

很多内置的Akka工具实际上就是acjay提及的扩展。