Scala アプリケーションの 1 つである種のメッセージ バスを実装したいと考えています。機能は次のとおりです。
- 1 .. N 種類のメッセージをサブスクライブする機能
- メッセージにはペイロードが含まれる場合があります
- 疎結合 (ノードはバスへの参照のみを保持します)
- 軽量 (完全なエンタープライズ メッセージ キューなどはありません)
私が計画しているのは、すべてのノードとバス自体を標準の Scala アクターとして実装することです。たとえば、次のSubscriberような特性を定義したいとします。
trait Subscriber[M <: Message[_]] {
this: Actor =>
def notify(message: M)
}
理想的には、この特性を混合すると、 type のサブスクリプションがすでに登録されているはずMです。
では、この考えは理にかなっていますか?メッセージバスを実現するためのより良いアプローチはありますか?