public void Handle(ProjectionCoreServiceMessage.SubComponentStarted message)
        {
            if (_currentState != CoreCoordinatorState.Starting)
            {
                Log.Debug("PROJECTIONS: Projection Core Coordinator received SubComponent Started when not starting. " +
                          "SubComponent: {subComponent}, InstanceCorrelationId: {correlationId}, CurrentState: {currentState}",
                          message.SubComponent, message.InstanceCorrelationId, _currentState);
                return;
            }
            if (message.InstanceCorrelationId != _instanceCorrelationId)
            {
                Log.Debug("PROJECTIONS: Projection Core Coordinator received SubComponent Started for wrong correlation id. " +
                          "SubComponent: {subComponent}, RequestedCorrelation: {requestedCorrelation}, InstanceCorrelationId: {correlationId}",
                          message.SubComponent, message.InstanceCorrelationId, _instanceCorrelationId);
                return;
            }
            _pendingSubComponentsStarts--;
            _activeSubComponents++;
            Log.Debug("PROJECTIONS: SubComponent Started: {subComponent}", message.SubComponent);

            if (_pendingSubComponentsStarts == 0)
            {
                _publisher.Publish(
                    new ProjectionSubsystemMessage.ComponentStarted(ComponentName, _instanceCorrelationId));
                _currentState = CoreCoordinatorState.Started;
            }
        }
 void IHandle <ProjectionCoreServiceMessage.SubComponentStarted> .Handle(
     ProjectionCoreServiceMessage.SubComponentStarted message)
 {
     _externalRequestQueue.Publish(
         new ProjectionCoreServiceMessage.SubComponentStarted(message.SubComponent, message.InstanceCorrelationId)
         );
 }
        public void Handle(ProjectionCoreServiceMessage.SubComponentStarted message)
        {
            _pendingSubComponentsStarts--;
            _activeSubComponents++;
            Log.Debug("PROJECTIONS: SubComponent Started: {subComponent}", message.SubComponent);

            if (_newInstanceWaiting)
            {
                StartWhenConditionsAreMet();
            }
        }