由 Actor 实现的 Scala 消息总线?
我想在我的一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
免责声明:我是 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