Я хочу реализовать некую шину сообщений в одном из моих приложений Scala.Возможности:
- возможность подписки на 1 .. N типов сообщений
- сообщения могут иметь полезную нагрузку
- слабая связь (узлы содержат только ссылку нашина)
- легковесный (без полной очереди корпоративных сообщений и т. д.)
Я планирую реализовать все узлы и саму шину в качестве стандартных акторов Scala.Например, я хочу определить черту Subscriber
следующим образом:
trait Subscriber[M <: Message[_]] {
this: Actor =>
def notify(message: M)
}
В идеале, микширование в этой черте должно уже регистрировать подписку для типа M
.
Так же как и эта идеяимеет смысл?Есть ли лучшие подходы для реализации шины сообщений?