【问题标题】:Why is Akka Actor not receiving sub-channels?为什么 Akka Actor 收不到子频道?
【发布时间】:2012-09-24 22:40:45
【问题描述】:

我有一个 Akka ActorEventBus(参考 https://github.com/akka/akka/blob/master/akka-actor/src/main/scala/akka/event/EventBus.scala#L70),它处理大量传递给不同参与者的消息。

我已经设置了一个 Actor 来订阅这个总线:

/**
   * special actor that transports messages to the hive
   */
  val hiveTalk = {
    val subscriber = actorSystem.actorOf(Props(new HiveTransport))

    Bus.subscribe( subscriber, "/app/browser/" )
    Bus.subscribe( subscriber, "/app/mobile/" )
  }

MessageBus 类是 ActorEventBus 的实现,如下所示:

/**
 * message bus to route messages to their appropriate contexts
 */
class MessageBus extends ActorEventBus with LookupClassification {

    type Event = MessageEvent
  type Classifier = String

  protected def mapSize(): Int = {
    10
  }

  protected def classify(event: Event): Classifier = {
    event.channel
  }

  protected def publish(event: Event, subscriber: Subscriber): Unit = {
    subscriber ! event
  }

}

问题

由于某种原因,hiveTalk actor-subscriber 没有收到发送到看起来像 /app/browser/26 的子频道的消息。

有什么想法吗?

【问题讨论】:

    标签: scala akka


    【解决方案1】:

    解决了。显然Lookup Classification 实际上只是一个简单的单通道实现。

    Subchannel Classification 是用于实际实现子通道的 Akka 特征。

    http://doc.akka.io/docs/akka/2.0/scala/event-bus.html#Subchannel_Classification

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2023-04-02
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      相关资源
      最近更新 更多