Пример #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 CreateOrderSaga(
            /* SagaWorker sagaWorker, */
            GrpcClientsHolder grpcClientsHolder,
            /* 这里注入orderService真实业务对象而不是saga代理对象,是为了避免两次sagaSession.invokeAsync重复注册一段代码为2各branchId */
            OrderServiceImpl orderService,
            ISagaResolver sagaResolver,
            ILogger <CreateOrderSaga> logger)
            : base(logger, sagaResolver)
        {
            // this._sagaWorker = sagaWorker;
            this._grpcClientsHolder = grpcClientsHolder;
            this._orderService      = orderService;
            this._sagaResolver      = sagaResolver;
            this._logger            = logger;


            // 本saga中服务会自动注入reslver,额外的服务需要手动注入
            //_sagaResolver.BindBranch<CreateOrderSagaData>( _orderService.createOrder);
            //_sagaResolver.BindBranch<CreateOrderSagaData>(_orderService.cancelOrder);
            //_sagaResolver.BindBranch<CreateOrderSagaData>(_orderService.approveOrder);


            // 显示定义 sagaDefinition是可选的,如果使用saga server管理动态分支,则不需要显示定义sagaDefinition
            sagaDefinition = Step()
                             //.SetRemoteAction(createOrder)
                             //.WithCompensation(cancelOrder)
                             .SetRemoteAction(createOrder)
                             .Step()
                             .SetRemoteAction(reserveCustomer)
                             .WithCompensation(cancelReserveCustomer)
                             .Step()
                             .SetRemoteAction(addLockedBalanceToMerchant)
                             .WithCompensation(cancelAddLockedBalanceToMerchant)
                             .Step()
                             .SetRemoteAction(approveOrder)
                             .Step()
                             .SetRemoteAction(approveAddLockedBalanceToMerchant)
                             .Step()
                             .SetRemoteAction(addOrderHistory)
                             .WithCompensation(cancelOrderHistory)
                             .Build(this);
        }
Пример #3
0
 public OrderServiceImpl(GrpcClientsHolder grpcClientsHolder)
 {
     this._grpcClientsHolder = grpcClientsHolder;
 }