public static IAkkatectureBuilder AddActorReference <TActor>( this IAkkatectureBuilder builder, IActorRef actorReference) where TActor : ActorBase { var actorRef = new ActorRefOfT <TActor>(actorReference); builder.Services.AddSingleton <IActorRef <TActor> >(actorRef); return(builder); }
public static IServiceCollection AddAggregateManager <TAggregateManager, TAggregate, TIdentity>( this IServiceCollection services, ActorSystem actorSystem, Expression <Func <TAggregateManager> > aggregateManagerFactory) where TAggregateManager : ReceiveActor, IAggregateManager <TAggregate, TIdentity> where TAggregate : IAggregateRoot <TIdentity> where TIdentity : IIdentity { var aggregateManager = actorSystem.ActorOf(Props.Create(aggregateManagerFactory)); var actorRef = new ActorRefOfT <TAggregateManager>(aggregateManager); services.AddSingleton <IActorRef <TAggregateManager> >(actorRef); return(services); }
public static IAkkatectureBuilder AddAggregateManagerCluster <TAggregateManager, TAggregate, TIdentity>( this IAkkatectureBuilder builder, int numberOfShards = 12) where TAggregateManager : ReceiveActor, IAggregateManager <TAggregate, TIdentity> where TAggregate : IAggregateRoot <TIdentity> where TIdentity : IIdentity { var aggregateManager = ClusterFactory <TAggregateManager, TAggregate, TIdentity> .StartClusteredAggregate( builder.ActorSystem, numberOfShards); var actorRef = new ActorRefOfT <TAggregateManager>(aggregateManager); builder.Services.AddSingleton <IActorRef <TAggregateManager> >(actorRef); return(builder); }