コード例 #1
0
 public InitServicesBgTask(ILogger <InitServicesBgTask> logger,
                           GrpcClientsHolder grpcClientsHolder,
                           IConsulClient consulClient,
                           SagaCollaborator sagaCollaborator,
                           SagaNodeInfoConfig sagaNodeInfoConfig)
 {
     this._logger             = logger;
     this._grpcClientsHolder  = grpcClientsHolder;
     this._consulClient       = consulClient;
     this._sagaCollaborator   = sagaCollaborator;
     this._sagaNodeInfoConfig = sagaNodeInfoConfig;
 }
コード例 #2
0
        public static IServiceCollection AddSagaConfig(
            this IServiceCollection services, IConfiguration config)
        {
            services.AddSingleton <ISagaDataConverter, JsonSagaDataConverter>();
            services.AddSingleton <ISagaResolver, SimpleSagaResolver>();
            // services.AddSingleton<SagaWorker, SimpleSagaWorker>();
            // services.AddSingleton<SagaStore, MemorySagaStore>();


            var sagaNodeConfigSection = config.GetSection("Saga:Node");

            if (sagaNodeConfigSection.Exists())
            {
                var sagaNodeInfoConfig = sagaNodeConfigSection.Get <SagaNodeInfoConfig>();
                services.AddSingleton(sagaNodeInfoConfig);
            }
            else
            {
                var sagaNodeInfoConfig = new SagaNodeInfoConfig()
                {
                    Group      = "annoy",
                    Service    = "annoy",
                    InstanceId = "0"
                };
                services.AddSingleton(sagaNodeInfoConfig);
            }


            services.AddSingleton <SagaCollaborator>();
            services.AddSingleton <CollaboratorSagaWorker>();

            // services.AddHostedService<SagaWorkerBgTask>(); 这是完全预先申明式saga定义的worker
            services.AddHostedService <CollaboratorSagaWorkerBgTask>();

            return(services);
        }