public void Start() { Log.Information($"{serviceName} is starting"); BusConfigurator.ConfigureBus(containerBuilder, MonitoredServices.DocumentConverterService, (cfg, ctx) => { cfg.ReceiveEndpoint(BusConstants.DocumentConverterJobInitRequestQueue, ec => { ec.Consumer(ctx.Resolve <JobInitConsumer>); ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy); }); cfg.ReceiveEndpoint(BusConstants.DocumentConverterConversionStartRequestQueue, ec => { ec.Consumer(ctx.Resolve <ConversionStartConsumer>); ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.DocumentConverterExtractionStartRequestQueue, ec => { ec.Consumer(ctx.Resolve <ExtractionStartConsumer>); ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.DocumentConverterSupportedFileTypesRequestQueue, ec => { ec.Consumer(ctx.Resolve <SupportedFileTypesConsumer>); ec.UseRetry(retry => retry.Incremental(3, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(0))); }); cfg.ReceiveEndpoint(BusConstants.MonitoringDocumentConverterInfoQueue, ec => { ec.Consumer(ctx.Resolve <DocumentConverterInfoConsumer>); ec.PrefetchCount = 4; }); cfg.ReceiveEndpoint(BusConstants.MonitoringAbbyyOcrTestQueue, ec => { ec.Consumer(ctx.Resolve <AbbyyOcrTestConsumer>); // Do not allow more than 4 concurrent Abbyy calls ec.PrefetchCount = 4; }); }); container = containerBuilder.Build(); bus = container.Resolve <IBusControl>(); bus.Start(); // Send event that document converter service is started // Push an error message to indicate that the item has failed bus.Publish <DocumentConverterServiceStartedEvent>(new { __TimeToLive = TimeSpan.FromSeconds(30), StartTime = DateTime.Now }); Log.Information($"{serviceName} started"); }
/// <summary> /// Starts the Repository Service. /// Called by the service host when the service is started. /// </summary> public void Start() { Log.Information("Repository service is starting"); // Configure Bus var helper = new ParameterBusHelper(); bus = BusConfigurator.ConfigureBus(MonitoredServices.RepositoryService, (cfg, host) => { cfg.ReceiveEndpoint(BusConstants.RepositoryManagerDownloadPackageMessageQueue, ec => { ec.Consumer(() => kernel.Get <DownloadPackageConsumer>()); ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.RepositoryManagerArchiveRecordAppendPackageMessageQueue, ec => { ec.Consumer(() => kernel.Get <AppendPackageConsumer>()); ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.RepositoryManagerReadPackageMetadataMessageQueue, ec => { ec.Consumer(() => kernel.Get <ReadPackageMetadataConsumer>()); ec.UseRetry(retryPolicy => retryPolicy.Exponential(3, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); }); cfg.ReceiveEndpoint(BusConstants.MonitoringDirCheckQueue, ec => { ec.Consumer(() => kernel.Get <CheckDirConsumer>()); }); helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg, host); cfg.UseSerilog(); }); // Add the bus instance to the IoC container kernel.Bind <IBus>().ToMethod(context => bus).InSingletonScope(); kernel.Bind <IBusControl>().ToMethod(context => bus).InSingletonScope(); kernel.Bind <IRequestClient <GetArchiveRecordsForPackageRequest, GetArchiveRecordsForPackageResponse> >() .ToMethod(GetArchiveRecordsForPackageRequestClientCallback); bus.Start(); Log.Information("Repository service started"); }
public void Start() { Log.Information($"{serviceName} is starting"); bus = BusConfigurator.ConfigureBus(MonitoredServices.DocumentConverterService, (cfg, host) => { kernel.Bind <IBus>().ToMethod(context => bus).InSingletonScope(); kernel.Bind <IBusControl>().ToMethod(context => bus).InSingletonScope(); cfg.ReceiveEndpoint(BusConstants.DocumentConverterJobInitRequestQueue, ec => { ec.Consumer(() => kernel.Get <JobInitConsumer>()); ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy); }); cfg.ReceiveEndpoint(BusConstants.DocumentConverterConversionStartRequestQueue, ec => { ec.Consumer(() => kernel.Get <ConversionStartConsumer>()); ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.DocumentConverterExtractionStartRequestQueue, ec => { ec.Consumer(() => kernel.Get <ExtractionStartConsumer>()); ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.DocumentConverterSupportedFileTypesRequestQueue, ec => { ec.Consumer(() => kernel.Get <SupportedFileTypesConsumer>()); ec.UseRetry(retry => retry.Incremental(3, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(0))); }); cfg.ReceiveEndpoint(BusConstants.MonitoringDocumentConverterInfoQueue, ec => { ec.Consumer(() => kernel.Get <DocumentConverterInfoConsumer>()); }); cfg.UseSerilog(); }); bus.Start(); Log.Information($"{serviceName} started"); }
/// <summary> /// Starts the Repository Service. /// Called by the service host when the service is started. /// </summary> public void Start() { Log.Information("Repository service is starting"); // Configure Bus var helper = new ParameterBusHelper(); BusConfigurator.ConfigureBus(containerBuilder, MonitoredServices.RepositoryService, (cfg, ctx) => { cfg.ReceiveEndpoint(BusConstants.RepositoryManagerDownloadPackageMessageQueue, ec => { ec.Consumer(ctx.Resolve <DownloadPackageConsumer>); ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.RepositoryManagerArchiveRecordAppendPackageMessageQueue, ec => { ec.Consumer(ctx.Resolve <AppendPackageConsumer>); ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.RepositoryManagerReadPackageMetadataMessageQueue, ec => { ec.Consumer(ctx.Resolve <ReadPackageMetadataConsumer>); ec.UseRetry(retryPolicy => retryPolicy.Exponential(3, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); }); cfg.ReceiveEndpoint(BusConstants.MonitoringDirCheckQueue, ec => { ec.Consumer(ctx.Resolve <CheckDirConsumer>); }); helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg); }); containerBuilder.Register(GetArchiveRecordsForPackageRequestClientCallback); var container = containerBuilder.Build(); bus = container.Resolve <IBusControl>(); bus.Start(); Log.Information("Repository service started"); }
/// <summary> /// Starts the Asset Service. /// Called by the service host when the service is started. /// </summary> public async Task Start() { Log.Information("Asset service is starting"); EnsurePasswordSeedIsConfigured(); var helper = new ParameterBusHelper(); // Configure Bus BusConfigurator.ConfigureBus(builder, MonitoredServices.AssetService, (cfg, ctx) => { cfg.ReceiveEndpoint(BusConstants.AssetManagerExtractFulltextMessageQueue, ec => { ec.Consumer(ctx.Resolve <ExtractFulltextPackageConsumer>); ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerTransformAssetMessageQueue, ec => { ec.Consumer(ctx.Resolve <TransformPackageConsumer>); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerPrepareForRecognition, ec => { ec.Consumer(ctx.Resolve <PrepareForRecognitionConsumer>); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerPrepareForTransformation, ec => { ec.Consumer(ctx.Resolve <PrepareForTransformationConsumer>); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.WebApiDownloadAssetRequestQueue, ec => { ec.Consumer(ctx.Resolve <DownloadAssetConsumer>); }); cfg.ReceiveEndpoint(BusConstants.WebApiGetAssetStatusRequestQueue, ec => { ec.Consumer(ctx.Resolve <GetAssetStatusConsumer>); }); cfg.ReceiveEndpoint(BusConstants.WebApiPrepareAssetRequestQueue, ec => { ec.Consumer(ctx.Resolve <PrepareAssetConsumer>); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerAssetReadyEventQueue, ec => { ec.Consumer(ctx.Resolve <AssetReadyConsumer>); // Retry or we have the situation where the job is not marked as terminated in the DB. ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerSchdeduleForPackageSyncMessageQueue, ec => { ec.Consumer(ctx.Resolve <ScheduleForPackageSyncConsumer>); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerUpdatePrimaerdatenAuftragStatusMessageQueue, ec => { ec.Consumer(ctx.Resolve <UpdatePrimaerdatenAuftragStatusConsumer>); }); helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg); helper.SubscribeAllSettingsInAssembly(Assembly.GetAssembly(typeof(Engine.Asset.AssetPreparationEngine)), cfg); }); builder.Register(CreateDoesExistInCacheRequestClient); builder.Register(CreateJobInitRequestClient); builder.Register(CreateSupportedFileTypesRequestClient); builder.Register(CreateDocumentConversionRequestClient); builder.Register(CreateDocumentExtractionRequestClient); builder.Register(CreateFindArchiveRecordRequestClient); container = builder.Build(); scheduler = await SchedulerConfigurator.Configure(container); bus = container.Resolve <IBusControl>(); bus.Start(); // Start the timer Log.Verbose("Starting scheduler"); await scheduler.Start(); Log.Information("Asset service started"); }
/// <summary> /// Starts the Asset Service. /// Called by the service host when the service is started. /// </summary> public async Task Start() { Log.Information("Asset service is starting"); scheduler = await SchedulerConfigurator.Configure(kernel); EnsurePasswordSeedIsConfigured(); // Configure Bus var helper = new ParameterBusHelper(); bus = BusConfigurator.ConfigureBus(MonitoredServices.AssetService, (cfg, host) => { cfg.ReceiveEndpoint(BusConstants.AssetManagerExtractFulltextMessageQueue, ec => { ec.Consumer(() => kernel.Get <ExtractFulltextPackageConsumer>()); ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerTransformAssetMessageQueue, ec => { ec.Consumer(() => kernel.Get <TransformPackageConsumer>()); BusConfigurator.SetPrefetchCountForEndpoint(ec); }); cfg.ReceiveEndpoint(BusConstants.WebApiDownloadAssetRequestQueue, ec => { ec.Consumer(() => kernel.Get <DownloadAssetConsumer>()); }); cfg.ReceiveEndpoint(BusConstants.WebApiGetAssetStatusRequestQueue, ec => { ec.Consumer(() => kernel.Get <GetAssetStatusConsumer>()); }); cfg.ReceiveEndpoint(BusConstants.WebApiPrepareAssetRequestQueue, ec => { ec.Consumer(() => kernel.Get <PrepareAssetConsumer>()); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerAssetReadyEventQueue, ec => { ec.Consumer(() => kernel.Get <AssetReadyConsumer>()); // Retry or we have the situation where the job is not marked as terminated in the DB. ec.UseRetry(retryPolicy => retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5))); }); cfg.ReceiveEndpoint(BusConstants.MonitoringAbbyyOcrTestQueue, ec => { ec.Consumer(() => kernel.Get <AbbyyOcrTestConsumer>()); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerSchdeduleForPackageSyncMessageQueue, ec => { ec.Consumer(() => kernel.Get <ScheduleForPackageSyncConsumer>()); }); cfg.ReceiveEndpoint(BusConstants.AssetManagerUpdatePrimaerdatenAuftragStatusMessageQueue, ec => { ec.Consumer(() => kernel.Get <UpdatePrimaerdatenAuftragStatusConsumer>()); }); helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg, host); cfg.UseSerilog(); }); // Add the bus instance to the IoC container kernel.Bind <IBus>().ToMethod(context => bus).InSingletonScope(); kernel.Bind <IBusControl>().ToMethod(context => bus).InSingletonScope(); kernel.Bind <IRequestClient <DoesExistInCacheRequest, DoesExistInCacheResponse> >().ToMethod(CreateDoesExistInCacheRequestClient); kernel.Bind <IRequestClient <JobInitRequest, JobInitResult> >().ToMethod(CreateJobInitRequestClient); kernel.Bind <IRequestClient <SupportedFileTypesRequest, SupportedFileTypesResponse> >().ToMethod(CreateSupportedFileTypesRequestClient); kernel.Bind <IRequestClient <ConversionStartRequest, ConversionStartResult> >().ToMethod(CreateDocumentConversionRequestClient); kernel.Bind <IRequestClient <ExtractionStartRequest, ExtractionStartResult> >().ToMethod(CreateDocumentExtractionRequestClient); kernel.Bind <IRequestClient <FindArchiveRecordRequest, FindArchiveRecordResponse> >().ToMethod(CreateFindArchiveRecordRequestClient); bus.Start(); // Start the timer Log.Verbose("Starting scheduler"); await scheduler.Start(); Log.Information("Asset service started"); }