首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka:订阅者处理多个主题

Akka:订阅者处理多个主题
EN

Stack Overflow用户
提问于 2017-04-11 19:53:44
回答 1查看 292关注 0票数 0

公共类订阅服务器扩展了UntypedActor {

代码语言:javascript
复制
public Subscriber() {
    ActorRef mediator =
            DistributedPubSub.get(getContext().system()).mediator();
    // subscribe to the topic named "content"
    mediator.tell(new DistributedPubSubMediator.Subscribe("content", getSelf()),
            getSelf());
    mediator.tell(new DistributedPubSubMediator.Subscribe("content_2", getSelf()),
            getSelf());
}

public void onReceive(Object msg) {
    if (msg instanceof String)
        System.out.println("Message received: " + msg );
    else if (msg instanceof DistributedPubSubMediator.SubscribeAck)
        System.out.println("subscribing");
    else
        unhandled(msg);
}

}

现在假设两个主题具有相同的结构名称(例如foo),但具有不同的类型。在这种情况下,订阅者如何知道"foo“消息是从哪个主题收到的?

EN

回答 1

Stack Overflow用户

发布于 2017-04-12 13:58:07

因此,DistributedPubSub (DPS)只是将消息传递给参与者的一种手段。接收循环并不关心消息是通过tell、ask还是通过DPS发送的,它只知道消息在其收件箱中。更重要的是,DPS只是一个路由器,它对收到的消息调用forward(),因此不会重写将消息发布到DPS的发送者信息。所以你的问题的答案是,你不会知道它是在什么DPS上出现的,我认为如果这很重要,可能是设计出了问题。我想不出比原始消息的发送者或消息本身的实际类型更重要的有效原因。所以我会在类型上进行切换和检查,如果我需要知道它来自哪里,从ActorRef的路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43345172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档