コード例 #1
0
        public void Handle(CoreProjectionManagementMessage.CreateAndPrepareSlave message)
        {
            try
            {
                var stateHandler = CreateStateHandler(_timeoutScheduler, _logger, message.HandlerType, message.Query);

                string name                         = message.Name;
                var    sourceDefinition             = ProjectionSourceDefinition.From(stateHandler.GetSourceDefinition());
                var    projectionVersion            = message.Version;
                var    projectionConfig             = message.Config.SetIsSlave();
                var    projectionProcessingStrategy =
                    _processingStrategySelector.CreateSlaveProjectionProcessingStrategy(
                        name,
                        projectionVersion,
                        sourceDefinition,
                        projectionConfig,
                        stateHandler,
                        message.MasterWorkerId,
                        _publisher,
                        message.MasterCoreProjectionId,
                        this);
                CreateCoreProjection(message.ProjectionId, projectionConfig.RunAs, projectionProcessingStrategy);
                _publisher.Publish(
                    new CoreProjectionStatusMessage.Prepared(
                        message.ProjectionId,
                        sourceDefinition));
            }
            catch (Exception ex)
            {
                _publisher.Publish(new CoreProjectionStatusMessage.Faulted(message.ProjectionId, ex.Message));
            }
        }
コード例 #2
0
 public void Handle(CoreProjectionManagementMessage.CreateAndPrepareSlave message)
 {
     try
     {
         //TODO: factory method can throw!
         IProjectionStateHandler stateHandler = message.HandlerFactory();
         string name                         = message.Name;
         var    sourceDefinition             = ProjectionSourceDefinition.From(name, stateHandler.GetSourceDefinition(), null, null);
         var    projectionVersion            = message.Version;
         var    projectionConfig             = message.Config.SetIsSlave();
         var    projectionProcessingStrategy =
             _processingStrategySelector.CreateSlaveProjectionProcessingStrategy(
                 name, projectionVersion, sourceDefinition, projectionConfig, stateHandler,
                 message.ResultsPublisher, message.MasterCoreProjectionId, this);
         CreateCoreProjection(message.ProjectionId, projectionConfig.RunAs, projectionProcessingStrategy);
         message.Envelope.ReplyWith(
             new CoreProjectionManagementMessage.Prepared(
                 message.ProjectionId, sourceDefinition, slaveProjections: null));
     }
     catch (Exception ex)
     {
         message.Envelope.ReplyWith(
             new CoreProjectionManagementMessage.Faulted(message.ProjectionId, ex.Message));
     }
 }