我目前正在制作一个相当大的基于Akka的Java应用程序,并且遇到了一些问题,这些问题让我感到无法接受。Akka消息和演员的命名约定
我目前的封装布局看起来有点像这样:
我Mobile
类作为actors
包里面的演员监事。
因为我不希望创建一组新演员的每一个HttpClient
和Account
,我与端点ActorRef
接收最后的结果通过周围那些消息对象,其存储在信息包,一起。但是,这会产生一个非常混乱的messages
包,每个演员都有不同的消息。例如。 MobileForActor1
,Actor1ForMobile
,MobileForActor2
等。现在我的问题是,有没有使用这种东西,这个问题涉及和是我的结构(Mobile
- >Actor1
- >Mobile
- >Actor2
- >等)公约的方式阿卡想要它或我必须只是瀑布消息(Mobile
- >Actor1
- >Actor2
- >等)?
现在我发送ConnectMessage
我Mobile
演员,然后将其发送到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的开发者,很喜欢这个主意,但由于文档没有很好地介绍,所以我觉得这是最好的地方。谢谢阅读!
你能举出一些好消息命名的例子吗?例如,我有一个供应商和消费者。消费者想问供应商它有多少商品。你如何为请求和响应命名消息? –
@TemaBolshakov - “GetGoodsCountRequest”和“GetGoodsCountResponse”如何? –
不确定这些名称在scala中足够习惯用法。我喜欢第一个,但后面看起来有点多余。用Int来回应可能更好?或者为Int定义类型别名,例如'输入GoodsCount = Int'。斯卡拉最好的选择是什么? –