コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }