如何管理BroadcastHub目标

时间:2018-03-12 22:55:33

标签: akka.net

假设我创建了一个runnable,如下所示:

var (sink, source) = MergeHub
        .Source<string>(perProducerBufferSize: 16)
        .ToMaterialized(BroadcastHub.Sink<string>(bufferSize: 256), Keep.Both)
        .Run(sys.Materializer());

然后我想动态添加和删除BroadcastHub的Actor使用者。我可以这样做:

var myProps = Props.Create<MyActor>();
var myActor = sys.System.ActorOf(myProps);
source.RunForeach(p => actor.Tell(p), myMaterializer);

(这是对的吗?)

但是我想写一个RegisterListener()和UnregisterListener()来添加和删除将接收消息的actor。这样做有一个很好的模式吗?用法是:

 var myActor1 = ...
 RegisterListener(myActor1);
 var myActor2 = ...
 RegisterListener(myActor2);
 ...
 UnregisterListener(myActor2);
 UnregisterListener(myActor1);

如果没有,我可以使用字典来跟踪注册情况,但是我没有看到让演员停止收听和销毁该注册的明显方法吗?

1 个答案:

答案 0 :(得分:1)

你的案例听起来像是在akka流上建立广播的pub / sub的一个例子。 The official documentation提供了这个例子。