public override void Init(IServiceContainer serviceContainer, IDictionary <string, string> jobArgsDictionary) { base.Init(serviceContainer, jobArgsDictionary); InitializationConfiguration = _serviceProvider.GetRequiredService <IOptionsSnapshot <InitializationConfiguration> >().Value; var serializer = new ServiceBusMessageSerializer(); var topicClient = new TopicClientWrapper(InitializationConfiguration.EmailPublisherConnectionString, InitializationConfiguration.EmailPublisherTopicName); var enqueuer = new EmailMessageEnqueuer(topicClient, serializer, LoggerFactory.CreateLogger <EmailMessageEnqueuer>()); EmailService = new AsynchronousEmailMessageService( enqueuer, LoggerFactory.CreateLogger <AsynchronousEmailMessageService>(), InitializationConfiguration); FromAddress = new MailAddress(InitializationConfiguration.MailFrom); var storageAccount = CloudStorageAccount.Parse(InitializationConfiguration.DataStorageAccount); var storageFactory = new AzureStorageFactory( storageAccount, InitializationConfiguration.ContainerName, LoggerFactory.CreateLogger <AzureStorage>()); Storage = storageFactory.Create(); }
private ITopicClientWrapper InstantiateTopic(TopicConfiguration config, IVeStatsDClient statsDClient, string topicId) { _creator.SetTopic(config.ConnectionString, config.TopicName, config.Update); var messagingFactory = GetMessagingFactory(config.ConnectionString, config.BatchFlushInterval); var client = messagingFactory.CreateTopicClient(config.TopicName); var topic = new TopicClientWrapper(client, statsDClient); _topics.Add(topicId, topic); return(topic); }
protected override void ConfigureDefaultAutofacServices(ContainerBuilder containerBuilder, IConfigurationRoot configurationRoot) { base.ConfigureDefaultAutofacServices(containerBuilder, configurationRoot); ConfigureFeatureFlagAutofacServices(containerBuilder); containerBuilder .Register(c => { var serviceBusConfiguration = c.Resolve <IOptionsSnapshot <PackageValidationServiceBusConfiguration> >(); var topicClient = new TopicClientWrapper(serviceBusConfiguration.Value.ConnectionString, serviceBusConfiguration.Value.TopicPath); return(topicClient); }) .Keyed <TopicClientWrapper>(PackageValidationServiceBusBindingKey); containerBuilder .RegisterType <PackageValidationEnqueuer>() .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(ITopicClient), (pi, ctx) => ctx.ResolveKeyed <TopicClientWrapper>(PackageValidationServiceBusBindingKey))) .As <IPackageValidationEnqueuer>(); }
protected override void ConfigureAutofacServices(ContainerBuilder containerBuilder, IConfigurationRoot configurationRoot) { containerBuilder .Register(c => { var serviceBusConfiguration = c.Resolve <IOptionsSnapshot <ServiceBusConfiguration> >(); var topicClient = new TopicClientWrapper(serviceBusConfiguration.Value.ConnectionString, serviceBusConfiguration.Value.TopicPath); return(topicClient); }) .Keyed <TopicClientWrapper>(PackageVerificationTopicClientBindingKey); containerBuilder .RegisterType <ProcessSignatureEnqueuer>() .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(ITopicClient), (pi, ctx) => ctx.ResolveKeyed <TopicClientWrapper>(PackageVerificationTopicClientBindingKey))) .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(IBrokeredMessageSerializer <SignatureValidationMessage>), (pi, ctx) => ctx.Resolve <SignatureValidationMessageSerializer>())) .As <IProcessSignatureEnqueuer>(); containerBuilder .RegisterType <ScopedMessageHandler <PackageValidationMessageData> >() .Keyed <IMessageHandler <PackageValidationMessageData> >(OrchestratorBindingKey); containerBuilder .RegisterTypeWithKeyedParameter < ISubscriptionProcessor <PackageValidationMessageData>, SubscriptionProcessor <PackageValidationMessageData>, IMessageHandler <PackageValidationMessageData> >( OrchestratorBindingKey); // Configure the email enqueuer. containerBuilder .Register(c => { var configuration = c.Resolve <IOptionsSnapshot <EmailConfiguration> >().Value.ServiceBus; return(new TopicClientWrapper(configuration.ConnectionString, configuration.TopicPath)); }) .Keyed <ITopicClient>(EmailBindingKey); containerBuilder .RegisterTypeWithKeyedParameter < IEmailMessageEnqueuer, EmailMessageEnqueuer, ITopicClient>( EmailBindingKey); // Configure Validators var validatingType = configurationRoot .GetSection(RunnerConfigurationSectionName) .GetValue(nameof(OrchestrationRunnerConfiguration.ValidatingType), ValidatingType.Package); switch (validatingType) { case ValidatingType.Package: ConfigurePackageSigningValidators(containerBuilder); ConfigurePackageCertificatesValidator(containerBuilder); ConfigureScanAndSignProcessor(containerBuilder); ConfigureFlatContainer(containerBuilder); break; case ValidatingType.SymbolPackage: ConfigureSymbolScanValidator(containerBuilder); ConfigureSymbolsValidator(containerBuilder); ConfigureSymbolsIngester(containerBuilder); break; default: throw new NotImplementedException($"Unknown type: {validatingType}"); } ValidationJobBase.ConfigureFeatureFlagAutofacServices(containerBuilder); ConfigureLeaseService(containerBuilder); }
private static IServiceProvider CreateProvider(IServiceCollection services) { var containerBuilder = new ContainerBuilder(); containerBuilder.Populate(services); /// Initialize dependencies for the <see cref="VcsValidator"/>. There is some additional complexity here /// because the implementations require ambiguous types (such as a <see cref="string"/> and a /// <see cref="CloudStorageAccount"/> which there may be more than one configuration of). containerBuilder .Register(c => { var vcsConfiguration = c.Resolve <IOptionsSnapshot <VcsConfiguration> >(); var cloudStorageAccount = CloudStorageAccount.Parse(vcsConfiguration.Value.DataStorageAccount); return(cloudStorageAccount); }) .Keyed <CloudStorageAccount>(VcsBindingKey); containerBuilder .Register(c => { var serviceBusConfiguration = c.Resolve <IOptionsSnapshot <ServiceBusConfiguration> >(); var topicClient = new TopicClientWrapper(serviceBusConfiguration.Value.ConnectionString, serviceBusConfiguration.Value.TopicPath); return(topicClient); }) .Keyed <TopicClientWrapper>(PackageVerificationTopicClientBindingKey); containerBuilder .RegisterType <PackageValidationService>() .WithKeyedParameter(typeof(CloudStorageAccount), VcsBindingKey) .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(string), (pi, ctx) => ctx.Resolve <IOptionsSnapshot <VcsConfiguration> >().Value.ContainerName)) .As <IPackageValidationService>(); containerBuilder .RegisterType <PackageValidationAuditor>() .WithKeyedParameter(typeof(CloudStorageAccount), VcsBindingKey) .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(string), (pi, ctx) => ctx.Resolve <IOptionsSnapshot <VcsConfiguration> >().Value.ContainerName)) .As <IPackageValidationAuditor>(); containerBuilder .RegisterType <ProcessSignatureEnqueuer>() .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(ITopicClient), (pi, ctx) => ctx.ResolveKeyed <TopicClientWrapper>(PackageVerificationTopicClientBindingKey))) .WithParameter(new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(IBrokeredMessageSerializer <SignatureValidationMessage>), (pi, ctx) => ctx.Resolve <SignatureValidationMessageSerializer>() )) .As <IProcessSignatureEnqueuer>(); containerBuilder .RegisterType <ScopedMessageHandler <PackageValidationMessageData> >() .Keyed <IMessageHandler <PackageValidationMessageData> >(OrchestratorBindingKey); containerBuilder .RegisterTypeWithKeyedParameter < ISubscriptionProcessor <PackageValidationMessageData>, SubscriptionProcessor <PackageValidationMessageData>, IMessageHandler <PackageValidationMessageData> >( OrchestratorBindingKey); ConfigurePackageSigningValidator(containerBuilder); ConfigurePackageCertificatesValidator(containerBuilder); return(new AutofacServiceProvider(containerBuilder.Build())); }
protected SupportRequestsNotificationScheduledTask( InitializationConfiguration configuration, Func <Task <SqlConnection> > openSupportRequestSqlConnectionAsync, ILoggerFactory loggerFactory) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } var serializer = new ServiceBusMessageSerializer(); var topicClient = new TopicClientWrapper(configuration.EmailPublisherConnectionString, configuration.EmailPublisherTopicName); var enqueuer = new EmailMessageEnqueuer(topicClient, serializer, loggerFactory.CreateLogger <EmailMessageEnqueuer>()); var messageService = new AsynchronousEmailMessageService( enqueuer, loggerFactory.CreateLogger <AsynchronousEmailMessageService>(), configuration); _messagingService = new MessagingService(messageService, loggerFactory.CreateLogger <MessagingService>()); _supportRequestRepository = new SupportRequestRepository(loggerFactory, openSupportRequestSqlConnectionAsync); }