由 Actor 实现的 Scala 消息总线?

And*_*ele 4 message scala bus actor

我想在我的一个 Scala 应用程序中实现某种消息总线。其特点是:

  • 能够订阅 1 .. N 种消息
  • 消息可能有有效负载
  • 松耦合(节点仅保留对总线的引用)
  • 轻量级(没有完全成熟的企业消息队列等)

我计划做的是将所有节点和总线本身实现为标准 Scala actor。例如我想定义Subscriber这样的特征:

trait Subscriber[M <: Message[_]] {
  this: Actor =>
  def notify(message: M)
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,混合此特征应该已经注册了该类型的订阅M

那么这个想法有道理吗?有没有更好的方法来实现消息总线?

Vik*_*ang 5

免责声明:我是 Akka 的 PO

嗨伊蒂,

这已经在 Akka(Actor 内核)中为您完成了:www.akka.io

文档: http: //doc.akkasource.org/routing-scala

Pub/Sub:Akka 监听器 路由器:Akka 路由器 便利性:Akka 路由