0
公共类用户扩展UntypedActor {阿卡:用户处理多主题
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),但不同类型。在这种情况下,订户如何知道“富”消息是从哪个主题收到的?
谢谢,但我没有完全得到你的答案。订阅者是否可以订阅超过1个主题? – PhiberOptixz
绝对是的。事实上很常见。只需创建额外的手段将消息传入演员。我有一个非常大的基于演员的系统,并且一些演员有几个订阅来订阅由几个来源产生的消息。事实上,我会为每个演员制作一个话题,让消费者决定他们想听什么。只要确保如果你不想处理你使用它们的消息,而不是将它们发送给未经删除的(因此是死信)。 –
谢谢。我是这个主题的新东西。 1)我可以使用ActorRef作为主题名称还是其糟糕的设计? 2)是否有办法知道特定主题名称是否已在整个集群中使用3)假设(我曾问过的原始问题)订阅者订阅了2个主题&让我们假设两个主题都发布相同类型的信息/消息/对象,现在订阅者将如何知道该消息来自哪个主题。 – PhiberOptixz