Как использовать составную черту с актерами Акки?

Я пытаюсь реализовать черту Pub / Sub, чтобы смешивать ее с другими актерами akka, используя черту стека.

Вот что я придумал:

trait PubSubActor extends Actor {
  abstract override def receive = 
    super.receive orElse {
      case Subscribe(topic) => /* ... */
      case Publish(topic, msg) => /* ... */
    }
}

class MyActor extends Actor with PubSubActor {
  override def receive = {
    case SomeMessage(a, b, c) => /* ... */
  }
}

В этот момент компилятор возвращает ошибку error: error: переопределенный метод receive в признаке MyActor ... метод receive нуждается в модификаторах абстрактного переопределения.

Можете ли вы объяснить мне, почему это не работает? Как я могу это исправить, чтобы он работал?

Спасибо!

ОБНОВИТЬ

Следующие работы:

trait PubSubActor extends Actor {
  abstract override def receive = 
    super.receive orElse {
      case Subscribe(topic) => /* ... */
      case Publish(topic, msg) => /* ... */
    }
}

class MyActor extends Actor {
  override def receive = {
    case SomeMessage(a, b, c) => /* ... */
  }
}

class MyActorImpl extends MyActor with PubSubActor

Но почему? Почему я могу получить поведение, которое хочу таким, а не другим? Какие-либо причины? Я не могу понять разницу между этими двумя образцами, которая имеет значение.

Ответы на вопрос(4)

Ваш ответ на вопрос