使用 AKKA 实现仿真应用程序
Implementing Simulation application using AKKA
我正在使用 akka actors 来实现一个模拟应用程序,其中包含中央控制器(由 Actor1 的实例表示)、一组实体(由 Actor2 的实例表示)相互协商并与周围环境协商以做出决策然后是行为,以及由一组方形区域组成的模拟环境(由一组 Actor3 实例表示)。
我对如何在控制器、模拟实体和环境方块之间实现消息传递技术感到困惑。我正在研究 Akka 中的 Routing
和 EventBus
实用程序。我对哪个适合我的场景感到困惑。你有什么想法吗?
该应用程序的第一个版本是 运行ning 在一台机器上,但稍后,我将 运行 它分发可能是通过使用 Docker 例如!
Routing
和EventBus
的主要区别在于Actor故障监控的责任方。控制器 Actor1 是否应该监控各种 Actor2 和 Actor3 实例的生命周期(例如包含处理 Actor 死亡的逻辑)?
如果答案是肯定的,那么 Actor1 应该使用它的上下文来生成 Actor2 和 Actor3 children 并使用路由发送 children 消息。
另一方面,如果 Controller 不负责 children,则应在 Actor1 之外创建 Actor2 和 Actor3 实例,并且 Actor1 应使用 EventBus 向它们发送消息。
根据您的评论“...但稍后,我将运行分发...”我建议不要让控制器负责 Actor2 & Actor3 生命周期和使用 EventBus。
我正在使用 akka actors 来实现一个模拟应用程序,其中包含中央控制器(由 Actor1 的实例表示)、一组实体(由 Actor2 的实例表示)相互协商并与周围环境协商以做出决策然后是行为,以及由一组方形区域组成的模拟环境(由一组 Actor3 实例表示)。
我对如何在控制器、模拟实体和环境方块之间实现消息传递技术感到困惑。我正在研究 Akka 中的 Routing
和 EventBus
实用程序。我对哪个适合我的场景感到困惑。你有什么想法吗?
该应用程序的第一个版本是 运行ning 在一台机器上,但稍后,我将 运行 它分发可能是通过使用 Docker 例如!
Routing
和EventBus
的主要区别在于Actor故障监控的责任方。控制器 Actor1 是否应该监控各种 Actor2 和 Actor3 实例的生命周期(例如包含处理 Actor 死亡的逻辑)?
如果答案是肯定的,那么 Actor1 应该使用它的上下文来生成 Actor2 和 Actor3 children 并使用路由发送 children 消息。
另一方面,如果 Controller 不负责 children,则应在 Actor1 之外创建 Actor2 和 Actor3 实例,并且 Actor1 应使用 EventBus 向它们发送消息。
根据您的评论“...但稍后,我将运行分发...”我建议不要让控制器负责 Actor2 & Actor3 生命周期和使用 EventBus。