Exemplo n.º 1
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));
     }
 }
Exemplo n.º 2
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));
            }
        }
Exemplo n.º 3
0
        public void Handle(CoreProjectionManagementMessage.CreateAndPrepareSlave message)
        {
            var command = new CreateAndPrepareSlaveCommand {
                Config                 = new PersistedProjectionConfig(message.Config),
                HandlerType            = message.HandlerType,
                Id                     = message.ProjectionId.ToString("N"),
                Name                   = message.Name,
                Query                  = message.Query,
                Version                = message.Version,
                MasterCoreProjectionId = message.MasterCoreProjectionId.ToString("N"),
                MasterWorkerId         = message.MasterWorkerId.ToString("N")
            };

            _commandWriter.PublishResponse("$create-and-prepare-slave", message.WorkerId, command);
        }