你好,这是一个非常简单的问题,我已经看到并阅读了人们写的地址可以指向多个演员。我想知道为什么?这样的用例是什么。
假设路由器参与者可以有一个地址,但是在消息上它可以将消息发送给多个参与者,但它的每个子节点仍然可能只有一个地址。
谢谢
你好,这是一个非常简单的问题,我已经看到并阅读了人们写的地址可以指向多个演员。我想知道为什么?这样的用例是什么。
假设路由器参与者可以有一个地址,但是在消息上它可以将消息发送给多个参与者,但它的每个子节点仍然可能只有一个地址。
谢谢
首先,让我们分析您的示例:确实,消息有效负载可以传递给多个参与者,正如您所描述的(即通过路由器),以及通过 pub-sub 模式。
我认为,pub-sub 更好,因为方便,因为中间不需要额外的演员(路由器)。另一个原因是在 pub-sub 情况下耦合较少:要订阅和发布消息,只需要知道地址,同时在路由器情况下,下游参与者还必须至少知道路由器地址和“订阅协议” ",(例如,donwstream.send<subscribe_me, message_type>(router_address, donwstream.address)
或者下游参与者必须知道路由器类实例,并且(在最坏的情况下)它们必须是路由器的子级(或由路由器拥有) - 例如(router.subscribe(downstream_actor)
)。
最后一个可能很重要并且取决于实现的原因,即传递的消息不同:在 pub-sub 模型中,原始消息是为多个参与者传递的,在路由器的情况下,原始消息的多个克隆交付。
其次,具有参与者多地址的多种模式是可能的。这里有一些例子: