コード例 #1
0
        static ITopicProducer <TKey, T> GetProducer <TKey, T>(string topicName, IConfigurationServiceProvider provider)
            where T : class
        {
            var address = new Uri($"topic:{topicName}");

            return(GetProducer <TKey, T>(address, provider));
        }
コード例 #2
0
 public static IBusFactoryConfigurator UseCustomFilters(
     this IBusFactoryConfigurator configurator, IConfigurationServiceProvider provider)
 {
     configurator.UseConsumeFilter(typeof(MessageLoggerConsumeFilter <>), provider);
     configurator.UseConsumeFilter(typeof(AuthDataGetterConsumeFilter <>), provider);
     return(configurator);
 }
コード例 #3
0
        public void Configure(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider configurationServiceProvider)
        {
            var stateMachine = configurationServiceProvider.GetRequiredService <SagaStateMachine <TInstance> >();
            var repository   = configurationServiceProvider.GetRequiredService <ISagaRepository <TInstance> >();

            var decoratorRegistration = configurationServiceProvider.GetService <ISagaRepositoryDecoratorRegistration <TInstance> >();

            if (decoratorRegistration != null)
            {
                repository = decoratorRegistration.DecorateSagaRepository(repository);
            }

            var stateMachineConfigurator = new StateMachineSagaConfigurator <TInstance>(stateMachine, repository, configurator);

            GetSagaDefinition(configurationServiceProvider)
            .Configure(configurator, stateMachineConfigurator);

            foreach (Action <ISagaConfigurator <TInstance> > action in _configureActions)
            {
                action(stateMachineConfigurator);
            }

            LogContext.Debug?.Log("Configured endpoint {Endpoint}, Saga: {SagaType}, State Machine: {StateMachineType}",
                                  configurator.InputAddress.GetLastPart(),
                                  TypeMetadataCache <TInstance> .ShortName, TypeMetadataCache.GetShortName(stateMachine.GetType()));

            configurator.AddEndpointSpecification(stateMachineConfigurator);
        }
コード例 #4
0
        void ISagaRegistration.Configure(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider configurationServiceProvider)
        {
            var repository = configurationServiceProvider.GetRequiredService <ISagaRepository <TSaga> >();

            var decoratorRegistration = configurationServiceProvider.GetService <ISagaRepositoryDecoratorRegistration <TSaga> >();

            if (decoratorRegistration != null)
            {
                repository = decoratorRegistration.DecorateSagaRepository(repository);
            }

            var sagaConfigurator = new SagaConfigurator <TSaga>(repository, configurator);

            GetSagaDefinition(configurationServiceProvider)
            .Configure(configurator, sagaConfigurator);

            foreach (Action <ISagaConfigurator <TSaga> > action in _configureActions)
            {
                action(sagaConfigurator);
            }

            LogContext.Info?.Log("Configured endpoint {Endpoint}, Saga: {SagaType}", configurator.InputAddress.GetLastPart(),
                                 TypeMetadataCache <TSaga> .ShortName);

            configurator.AddEndpointSpecification(sagaConfigurator);
        }
コード例 #5
0
        protected void ConfigureMediator(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider provider)
        {
            var registration = provider.GetRequiredService<IRegistration>();

            registration.ConfigureConsumers(configurator);
            registration.ConfigureSagas(configurator);
        }
コード例 #6
0
        public void Configure(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider configurationServiceProvider)
        {
            ISagaStateMachineFactory     stateMachineFactory = configurationServiceProvider.GetRequiredService <ISagaStateMachineFactory>();
            SagaStateMachine <TInstance> stateMachine        = stateMachineFactory.CreateStateMachine <TInstance>();

            IStateMachineActivityFactory activityFactory = configurationServiceProvider.GetRequiredService <IStateMachineActivityFactory>();

            void AddStateMachineActivityFactory(ConsumeContext context)
            {
                context.GetOrAddPayload(() => activityFactory);
            }

            var repositoryFactory = configurationServiceProvider.GetRequiredService <ISagaRepositoryFactory>();
            ISagaRepository <TInstance> repository = repositoryFactory.CreateSagaRepository <TInstance>(AddStateMachineActivityFactory);
            var stateMachineConfigurator           = new StateMachineSagaConfigurator <TInstance>(stateMachine, repository, configurator);

            GetSagaDefinition(configurationServiceProvider)
            .Configure(configurator, stateMachineConfigurator);

            foreach (Action <ISagaConfigurator <TInstance> > action in _configureActions)
            {
                action(stateMachineConfigurator);
            }

            configurator.AddEndpointSpecification(stateMachineConfigurator);
        }
コード例 #7
0
 private static void ConfigureContext(IBusFactoryConfigurator cfg, IConfigurationServiceProvider context)
 {
     cfg.UseDelayedMessageScheduler();
     cfg.UsePublishFilter(typeof(PublishMessageDecryptMessageFilter <>), context);
     cfg.UsePublishFilter(typeof(PublishMessageLoggingFilter <>), context);
     cfg.UsePrometheusMetrics();
 }
コード例 #8
0
        DatabaseContext <TSaga> Factory(IConfigurationServiceProvider provider)
        {
            var client = new DocumentClient(EndpointUri, Key);

            var context = new DocumentDbDatabaseContext <TSaga>(client, DatabaseId, CollectionId ?? DefaultCollectionName, _serializerSettings);

            return(context);
        }
コード例 #9
0
        protected void ConfigureMediator(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider provider)
        {
            var registration = new Registration(provider, _consumerRegistrations.ToDictionary(x => x.Key, x => x.Value),
                                                _sagaRegistrations.ToDictionary(x => x.Key, x => x.Value), _executeActivityRegistrations.ToDictionary(x => x.Key, x => x.Value),
                                                _activityRegistrations.ToDictionary(x => x.Key, x => x.Value), _endpointRegistrations.ToDictionary(x => x.Key, x => x.Value));

            registration.ConfigureConsumers(configurator);
            registration.ConfigureSagas(configurator);
        }
コード例 #10
0
 public BusRegistrationContextComponentResolver(IConfigurationServiceProvider provider, IHangfireComponentResolver resolver)
 {
     _backgroundJobClient = new Lazy <IBackgroundJobClient>(() => provider.GetService <IBackgroundJobClient>() ?? resolver.BackgroundJobClient);
     _recurringJobManager = new Lazy <IRecurringJobManager>(() => provider.GetService <IRecurringJobManager>() ?? resolver.RecurringJobManager);
     _timeZoneResolver    = new Lazy <ITimeZoneResolver>(() => provider.GetService <ITimeZoneResolver>() ?? resolver.TimeZoneResolver);
     _jobFilterProvider   = new Lazy <IJobFilterProvider>(() => provider.GetService <IJobFilterProvider>() ?? resolver.JobFilterProvider);
     _backgroundProcesses =
         new Lazy <IEnumerable <IBackgroundProcess> >(() => provider.GetService <IEnumerable <IBackgroundProcess> >() ?? resolver.BackgroundProcesses);
     _jobStorage = new Lazy <JobStorage>(() => provider.GetService <JobStorage>() ?? resolver.JobStorage);
 }
コード例 #11
0
 public Registration(IConfigurationServiceProvider configurationServiceProvider, IRegistrationCache <IConsumerRegistration> consumers,
                     IRegistrationCache <ISagaRegistration> sagas, IRegistrationCache <IExecuteActivityRegistration> executeActivities,
                     IRegistrationCache <IActivityRegistration> activities)
 {
     _configurationServiceProvider = configurationServiceProvider;
     Consumers         = consumers;
     Sagas             = sagas;
     ExecuteActivities = executeActivities;
     Activities        = activities;
 }
コード例 #12
0
        private static string ComposeGroupId(IConfigurationServiceProvider context)
        {
            var hostEnv        = context.GetRequiredService <IHostEnvironment>();
            var groupIdBuilder = new StringBuilder(hostEnv.EnvironmentName.ToLower());

            if (hostEnv.IsDevelopment()) //use different group-id for different developers
            {
                groupIdBuilder.AppendFormat("-{0}", Dns.GetHostName().ToLower());
            }
            return(groupIdBuilder.ToString());
        }
コード例 #13
0
        public Registration(IConfigurationServiceProvider configurationServiceProvider, IRegistrationCache <IConsumerRegistration> consumers,
                            IRegistrationCache <ISagaRegistration> sagas, IRegistrationCache <IExecuteActivityRegistration> executeActivities,
                            IRegistrationCache <IActivityRegistration> activities, IRegistrationCache <IFutureRegistration> futures)
        {
            _configurationServiceProvider = configurationServiceProvider;
            Consumers         = consumers;
            Sagas             = sagas;
            ExecuteActivities = executeActivities;
            Activities        = activities;
            Futures           = futures;

            _configuredTypes = new HashSet <Type>();
        }
コード例 #14
0
        public void Configure(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider configurationServiceProvider)
        {
            var executeActivityScopeProvider = configurationServiceProvider.GetRequiredService <IExecuteActivityScopeProvider <TActivity, TArguments> >();

            var executeActivityFactory = new ScopeExecuteActivityFactory <TActivity, TArguments>(executeActivityScopeProvider);

            var specification = new ExecuteActivityHostSpecification <TActivity, TArguments>(executeActivityFactory);

            foreach (var action in _configureActions)
            {
                action(specification);
            }

            configurator.AddEndpointSpecification(specification);
        }
コード例 #15
0
        static IEventHubProducerProvider GetCurrentProducerProvider(IConfigurationServiceProvider provider)
        {
            var producerProvider = provider.GetRequiredService <IEventHubRider>();

            var contextProvider = provider.GetService <ScopedConsumeContextProvider>();

            if (contextProvider != null)
            {
                return(contextProvider.HasContext
                    ? producerProvider.GetProducerProvider(contextProvider.GetContext())
                    : producerProvider.GetProducerProvider());
            }

            return(producerProvider.GetProducerProvider(provider.GetService <ConsumeContext>()));
        }
コード例 #16
0
        static ITopicProducer <TKey, T> GetProducer <TKey, T>(Uri address, IConfigurationServiceProvider provider)
            where T : class
        {
            var rider = provider.GetRequiredService <IKafkaRider>();

            var contextProvider = provider.GetService <ScopedConsumeContextProvider>();

            if (contextProvider != null)
            {
                return(contextProvider.HasContext
                    ? rider.GetProducer <TKey, T>(address, contextProvider.GetContext())
                    : rider.GetProducer <TKey, T>(address));
            }

            return(rider.GetProducer <TKey, T>(address, provider.GetService <ConsumeContext>()));
        }
コード例 #17
0
        IFutureDefinition <TFuture> GetFutureDefinition(IConfigurationServiceProvider provider)
        {
            if (_definition != null)
            {
                return(_definition);
            }

            _definition = provider.GetService <IFutureDefinition <TFuture> >() ?? new DefaultFutureDefinition <TFuture>();

            var endpointDefinition = provider.GetService <IEndpointDefinition <TFuture> >();

            if (endpointDefinition != null)
            {
                _definition.EndpointDefinition = endpointDefinition;
            }

            return(_definition);
        }
コード例 #18
0
        void ISagaRegistration.Configure(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider configurationServiceProvider)
        {
            var repositoryFactory = configurationServiceProvider.GetRequiredService <ISagaRepositoryFactory>();
            ISagaRepository <TSaga> sagaRepository = repositoryFactory.CreateSagaRepository <TSaga>();
            var sagaConfigurator = new SagaConfigurator <TSaga>(sagaRepository, configurator);

            LogContext.Debug?.Log("Configuring endpoint {Endpoint}, Saga: {SagaType}", configurator.InputAddress.GetLastPart(), TypeMetadataCache <TSaga> .ShortName);

            GetSagaDefinition(configurationServiceProvider)
            .Configure(configurator, sagaConfigurator);

            foreach (Action <ISagaConfigurator <TSaga> > action in _configureActions)
            {
                action(sagaConfigurator);
            }

            configurator.AddEndpointSpecification(sagaConfigurator);
        }
コード例 #19
0
        public void Configure(IReceiveEndpointConfigurator configurator, IConfigurationServiceProvider configurationServiceProvider)
        {
            ISagaStateMachineFactory stateMachineFactory = configurationServiceProvider.GetRequiredService<ISagaStateMachineFactory>();
            SagaStateMachine<TInstance> stateMachine = stateMachineFactory.CreateStateMachine<TInstance>();

            var repositoryFactory = configurationServiceProvider.GetRequiredService<ISagaRepositoryFactory>();
            ISagaRepository<TInstance> repository = repositoryFactory.CreateSagaRepository<TInstance>();
            var stateMachineConfigurator = new StateMachineSagaConfigurator<TInstance>(stateMachine, repository, configurator);

            LogContext.Debug?.Log("Configuring endpoint {Endpoint}, Saga: {SagaType}, State Machine: {StateMachineType}", configurator.InputAddress.GetLastPart(),
                TypeMetadataCache<TInstance>.ShortName, TypeMetadataCache.GetShortName(stateMachine.GetType()));

            GetSagaDefinition(configurationServiceProvider)
                .Configure(configurator, stateMachineConfigurator);

            foreach (Action<ISagaConfigurator<TInstance>> action in _configureActions)
                action(stateMachineConfigurator);

            configurator.AddEndpointSpecification(stateMachineConfigurator);
        }