Exemplo n.º 1
0
 /**
  * @return StartableEndpoint
  */
 public function prepare()
 {
     $this->persistenceDefinitionApplier->apply($this->settings);
     $featureActivator = new FeatureActivator($this->settings);
     foreach ($this->settings->get(KnownSettingsEnum::FEATURE_FQCN_LIST) as $featureFqcn) {
         /** @var Feature $feature */
         $feature = new $featureFqcn();
         $feature->describe();
         $featureActivator->addFeature($feature);
     }
     $featureInstaller = new FeatureInstaller($featureActivator->getFeatures());
     $featureStarter = new FeatureStarter($featureActivator->getFeatures());
     /** @var TransportDefinition $transportDefinition */
     $transportDefinition = $this->settings->get(TransportDefinition::class);
     $this->settings->set(TransportInfrastructure::class, $transportDefinition->formalize($this->settings, $transportDefinition->createConnectionFactory($this->settings)));
     $featureActivator->activateFeatures($this->builder, $this->pipelineModifications);
     $featureInstaller->installFeatures($this->builder, $this->settings);
     $this->pipelineModifications->registerStepsInBuilder($this->builder);
     $featureStarter->startFeatures($this->builder, $this->busContext);
     $this->isPrepared = true;
     return $this;
 }
Exemplo n.º 2
0
 /**
  * @return StartableEndpoint
  */
 public function build()
 {
     $externalContainer = $this->settings->tryGet(KnownSettingsEnum::CONTAINER);
     $container = new Container();
     $acclimator = new ContainerAcclimator();
     $adaptedExternalContainer = $externalContainer ? $acclimator->acclimate($externalContainer) : null;
     $builder = new Builder($container, $adaptedExternalContainer);
     $container[BuilderInterface::class] = $builder;
     $this->ensureTransportConfigured();
     $this->ensureOutboxPersistenceConfigured();
     $this->ensureSerializationConfigured();
     $this->ensureUuidGenerationConfigured();
     $this->registerKnownFeatures();
     $this->settings->setDefault(KnownSettingsEnum::ENDPOINT_NAME, $this->endpointName);
     $this->settings->setDefault(KnownSettingsEnum::SEND_ONLY, false);
     $this->settings->set(QueueBindings::class, new QueueBindings());
     $persistenceDefinitionApplier = new PersistenceDefinitionApplier();
     $this->registerBaseContainerServices($container);
     return new StartableEndpoint($this->settings, $persistenceDefinitionApplier, $builder, $builder->build(PipelineModifications::class), $builder->build(BusContext::class));
 }
 public static function markFeatureAsInactive($featureFqcn, Settings $settings)
 {
     $settings->set($featureFqcn, FeatureStateEnum::INACTIVE);
 }
 /**
  * @param BusContextInterface $busContext
  */
 public function start(BusContextInterface $busContext)
 {
     $endpointId = $this->outboxPersister->fetchOrGenerateEndpointId($this->endpointName);
     $this->settings->set(Doctrine2KnownSettingsEnum::OUTBOX_ENDPOINT_ID, $endpointId);
 }