我有相当多的 Apache Camel(路由/中介/编排引擎;轻量级 ESB)经验,并且正在绞尽脑汁试图理解 Akka 之间的区别:
- 调度员 (
Dispatcher
,PinnedDispatcher
,CallingThreadDispatcher
) - 路由器
- 游泳池
- 团体
- 事件总线
根据文档:
调度员是:
...是让 Akka Actors “滴答作响”的原因,可以说是机器的引擎。
但这并不能真正解释什么是调度程序或它与演员的关系是什么。
路由器是:
消息可以通过路由器发送,以有效地将它们路由到目标参与者,称为路由。路由器可以在actor内部或外部使用,您可以自己管理路由或使用具有配置功能的自包含路由器actor。但这听起来很像调度员。
池是:
[一种] 路由器 [它] 创建路由作为子角色,并在它们终止时将它们从路由器中删除。
组是:
[A type of] actor [where routees] 在路由器外部创建,路由器使用 actor 选择将消息发送到指定路径,而无需注意终止。
事件总线是:
...一种向演员组发送消息的方法
这听起来就像调度程序和路由器。
所以我主要担心的是:
- 调度程序、路由器和事件总线之间有什么区别,以及何时使用它们?
- 何时使用池与组?