将 Akka 与现有 java 项目集成的示例
如果我已有使用和容器的现有 Web 应用程序。将Akka集成到其中的正确方法是什么?java
spring
servlet
就像我将要拥有的那样,它们彼此沟通。开始使用这些参与者的切入点是什么?(例如:1.把它放在那里 2.更改配置 3.获取对actor的引用)Actor1
Actor2
我发现 http://doc.akka.io/docs/akka/2.2-M3/general/configuration.html 但他没有为我提供胶水。只是想获得集成的真实示例。
有没有一些简单的集成示例?
编辑:应用程序进行一些搜索,从外部获取一些数据,将信息存储到文件中。
该应用程序非常大。有些组件/对象可以离开自己的生命,即脱离了客户端的直接请求,它可以做一些并行的事情。就像一些具有可变状态的单例对象一样。
问题是我不知道我在哪里可以应用Actor,我正在调查它。但是我已经在这里和那里有很多同步块。
而且,我相信,这已经是一种迹象,表明演员可能会被应用。(因为我不确定,也许我忘了放一些同步,当然也没有集成测试)
关于配置,我只是不确定我是否应该配置一些appplication.conf来让Actrors/Akka住在那里(因为文档本身描述了它)。
我看到的:
@Component("someManager")
public class SomeManager {
List<Some> something; // mutable state, that why I use locks here.
// methods: add(), delete(), update()
}
我可以做到SomeManagerActor
SomeManager
从 使用。因此,拥有控制器Actor也会很好吗?我想接收反馈到(()方法)。controller
onReceive
这是有争议的...这就是我需要一些例子的另一个原因。
我相信我可以通过摆脱所有的东西,将责任转移给参与者,使用消息作为与他们之间沟通的一种方式来改善应用程序。synchronized/whait/notify
或者像这样,它可能是写入属性文件的参与者:
编辑:
例如,现在我发现:为了让Actor1向Actor2发送消息,我使用了一个技巧:
// somewhere in existing code
public void initActors() {
ActorSystem system = ActorSystem.create(example");
// initializing
final ActorRef actor1 = system.actorOf(Props.create(Actor1.class), "actor1");
}
Actor1 有一个方法,一旦我得到对它的引用,它就会启动(上图)。它向Actor2发送消息:preStart()
@Override
public void preStart() {
但我不确定为什么要初始化两个参与者来完成他们的工作。