加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Akka消息和演员的命名约定

发布时间:2020-12-15 00:08:25 所属栏目:Java 来源:网络整理
导读:我目前正在制作一个非常大的基于Akka的 Java应用程序,我遇到了几个问题,我没有结束. 我当前的包布局看起来像这样: 我的移动课程作为演员包中的演员的主管. 由于我不想为每个HttpClient和Account创建一组新的演员,所以我将消息对象中的消息对象与存储在消息
我目前正在制作一个非常大的基于Akka的 Java应用程序,我遇到了几个问题,我没有结束.

我当前的包布局看起来像这样:

我的移动课程作为演员包中的演员的主管.

由于我不想为每个HttpClient和Account创建一组新的演员,所以我将消息对象中的消息对象与存储在消息包中的端点ActorRef一起传递给接收最终结果的端点ActorRef.然而,这会创建一个非常混乱的消息包,每个演员都有不同的消息.例如. MobileForActor1,Actor1ForMobile,MobileForActor2等.现在我的问题是,是否有一个公约用于处理这个问题的这种东西,是我的结构(Mobile-> Actor1-> Mobile-> Actor2->等.)Akka想要这样做的方式,或者我必须仅仅排列消息(Mobile-> Actor1-> Actor2->等).

现在我发送一个ConnectMessage到我的移动演员,然后它发送给Actor1,Actor1处理它并发送一个新的消息回移动,移动发送该响应然后到Actor2,该循环继续创建一个基于老信息.例如.新Message2(message1.foo,message1.bar,message1.baz,newComputatedResult,newComputatedResult2等);

这是一个很好的做法,还是应该包含旧的实例(可能包含不再有用的信息),并且包括新的东西?例如.新Message2(message1,newComputatedResult2等);

还是应该做一些完全不同的事情?

我想到使用TypedActors,但是那些需要使用瀑布模式,我不知道如何传递想要接收最终结果的侦听器的ActorRef.

我希望自己能够理解,因为英语不是我的少女语言,而且这个问题对大家来说是清楚的.

我是一个开始Akka的开发人员,并且喜欢这个想法,但由于文档并不完美,我认为这是最好的地方.谢谢阅读!

解决方法

因为我在Akka的学习曲线上处理了同样的问题,所以我会提出几点意见.我想你是要求一些经验法则,所以我的这里是包含的.

首先,创造演员是非常便宜的;它们非常轻巧.那么,为什么不为每个HttpClient和Account创建一个,并给他们从他们的身份派生的合适的名字?这也避免了你必须尽可能多地传递他们,可能是放弃你的代码.

第二,保持你的消息名称短,重点突出,并用动词开始.每个消息都应该告诉演员做某事,这样你就可以通过使用动词来反映这个名字.

第三,这些消息与演员一起去.我通常在actor类的伴随对象中声明它们,所以使用它们就像ActorClass.MessageName,除非它在ActorClass中,而且只是MessageName.

第四,追加一名演员的名字.我经常只是结合一个计数器(使用AtomicInteger)和类型名称(Car-1,Car-2等).

如果层次结构对您很重要,我建议仅将父actor追加到名称中. Car-7中包含“Phone-1-in-Car-7”的意思,即Phone-1.然后,您可以通过遵循父链接以编程方式和手动方式组合层次结构.

我认为ConnectMessage中的“消息”是多余的.只要使消息名称为“Connect”,或者更好的“ConnectToThing”(无论如何,如果相关).

我不会把你的消息名称复合得太多,就像你用Message2提示一样.使用最少量的信息对谁来读这些名字有用.我认为对这个缺乏回应可能是由于你的这个问题的部分.我发现它很混乱,因为很多细节都没有.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读