【发布时间】:2014-07-29 02:37:13
【问题描述】:
我目前正在制作一个相当大的基于 Akka 的 Java 应用程序,但我遇到了几个问题,这些问题一直困扰着我。
我当前的包布局有点像这样:
我的Mobile 班级担任actors 包内演员的主管。
由于我不想为每个HttpClient 和Account 创建一组新的Actor,我将它们传递到消息对象中,这些对象存储在消息包中,以及端点ActorRef收到最终结果。然而,这确实会创建一个非常混乱的 messages 包,其中每个参与者都有不同的消息。例如。 MobileForActor1、Actor1ForMobile、MobileForActor2 等等。现在我的问题是,是否有一个约定用于处理这个问题的这类东西,并且是我的结构(Mobile->Actor1->@ 987654333@->Actor2-> 等)Akka 想要的方式还是我必须将消息排序(Mobile->Actor1->Actor2-> 等)?
现在我正在向我的Mobile 演员发送ConnectMessage,然后将其发送给Actor1,Actor1 处理它并将新消息发送回Mobile,Mobile 发送该响应然后到Actor2,循环继续,新消息基于旧消息创建。例如。 new Message2(message1.foo, message1.bar, message1.baz, newComputatedResult, newComputatedResult2, etc);
这是一种好的做法,还是我应该包含旧实例(其中可能包含不再有用的信息)并包含新内容?例如。 new Message2(message1, newComputatedResult, newComputatedResult2, etc);
或者我应该做一些完全不同的事情吗?
我考虑过使用 TypedActors,但那些需要使用瀑布模式,我不知道如何传递想要接收最终结果的侦听器的 ActorRef。
我希望我让自己足够理解,因为英语不是我的处女语言,而且每个人都清楚这个问题。
我是 Akka 开发人员,我喜欢这个想法,但由于文档没有很好地涵盖这一点,我认为这将是最好的提问地点。谢谢阅读!
【问题讨论】: