我想在我的一个 Scala 应用程序中实现某种消息总线。特点是:
- 能够订阅 1 .. N 类型的消息
- 消息可能有有效载荷
- 松耦合(节点只持有对总线的引用)
- 轻量级(没有完全成熟的企业消息队列等)
我计划做的是将所有节点和总线本身实现为标准 Scala 演员。例如,我想定义这样的特征Subscriber
:
trait Subscriber[M <: Message[_]] {
this: Actor =>
def notify(message: M)
}
理想情况下,混入这个 trait 应该已经注册了 type 的订阅M
。
那么这个想法有意义吗?有没有更好的方法来实现消息总线?