由 Actor 实现的 Scala 消息总线?

发布于 2024-10-06 17:15:18 字数 432 浏览 9 评论 0原文

我想在我的一个 Scala 应用程序中实现某种消息总线。这些功能是:

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

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

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

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

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

I want to implement some kind of message bus in one of my Scala applications. The features would be:

  • ability to subscribe to 1 .. N types of messages
  • messages may have payloads
  • loose coupling (nodes only hold a reference to the bus)
  • lightweight (no fully blown enterprise message queue etc.)

What I plan to do is to implement all nodes and the bus itself as standard Scala actors. For example I want to define a trait Subscriber like this:

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

Ideally mixing in this trait should already register the subscription for the type M.

So does this idea make sense? Are there better approaches to realize a message bus?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑾兮 2024-10-13 17:15:18

免责声明:我是 Akka Hi Itti 的 PO

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

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

Pub /Sub: Akka 监听器
路由器: Akka 路由器< /a>
方便:
Akka 路由< /a>

Disclaimer: I am the PO of Akka

Hi Itti,

This has already been done for you in Akka, the Actor Kernel: www.akka.io

Docs: http://doc.akkasource.org/routing-scala

Pub/Sub: Akka Listeners
Routers: Akka Routers
Convenience: Akka Routing

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文