我正在使用akka actor来实现一个模拟应用程序,其中央控制器(由Actor1的实例表示),一组实体(由Actor2的实例表示),它们彼此协商并与周围环境协商以做出决定然后行为,以及由一组平方区域组成的模拟环境(由Actor3的实例集表示)。
我很困惑如何在控制器,模拟实体和环境方块之间实现消息传递技术。我正在调查Akka中的Routing
和EventBus
实用程序。我很困惑哪一个适合我的场景。你有什么想法吗?
应用程序的第一个版本在一台机器上运行,但稍后,我将运行它,例如可以通过使用Docker来运行它!
答案 0 :(得分:0)
Routing
和EventBus
之间的主要区别是Actor失败监控的责任方。 Controller1是否应监视各种Actor2和Actor3实例的生命周期(例如包含处理Actor死亡的逻辑)?
如果答案是肯定的,那么Actor1应该使用它的上下文来产生Actor2& Actor3子节点并使用路由发送子消息。
另一方面,如果控制器不对儿童负责,那么演员2&应该在Actor1之外创建Actor3实例,并且Actor1应该使用EventBus向它们发送消息。
根据您的评论“......但稍后,我将分发运行...”我建议不让Controller负责Actor2& Actor3生命周期和使用EventBus。