假设我创建了一个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);
如果没有,我可以使用字典来跟踪注册情况,但是我没有看到让演员停止收听和销毁该注册的明显方法吗?