/// <summary> /// Optional override to create listeners (like tcp, http) for service instance. /// </summary> /// <returns>The collection of listeners.</returns> protected override IEnumerable <ServiceInstanceListener> CreateServiceInstanceListeners() { return(new[] { new ServiceInstanceListener(serviceContext => new KestrelCommunicationListener(serviceContext, "ServiceEndpoint", (url, listener) => { PlatformEventSource.GetInstance().ServiceMessage(serviceContext, $"Starting WebListener on {url}"); return new WebHostBuilder() .UseKestrel(opt => opt.AddServerHeader = false) .ConfigureServices(services => services .AddSingleton(serviceContext.CodePackageActivationContext) .AddSingleton(serviceContext.ServiceName) .AddSingleton <ITelemetryInitializer>(provider => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))) .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup <Startup>() .UseApplicationInsights() .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None) .UseUrls(url) .Build(); })) }); }
/// <summary> /// is the entry point of the service host process. /// </summary> private static void Main() { try { using (var diagnosticPipeline = ServiceFabricDiagnosticPipelineFactory.CreatePipeline("Callcredit.Mastered-Data.Callcredit.Insolvencies.Service-Pipeline")) { ServiceRuntime.RegisterServiceAsync("ApiType", context => new Service(context)).GetAwaiter().GetResult(); PlatformEventSource.Initialise("Callcredit.Mastered-Data.Callcredit.Insolvencies.Service.Platform"); PlatformEventSource.GetInstance().ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(Service).Name); Thread.Sleep(Timeout.Infinite); } } catch (Exception e) { PlatformEventSource.GetInstance().ServiceHostInitializationFailed(e.ToString()); throw; } }
/// <summary> /// Adds the event sources. /// </summary> /// <param name="services">The services collection used to configure the Insolvency Service.</param> /// <param name="configuration">The configuration settings used in the Insolvency Service.</param> public static void AddEventSources(this IServiceCollection services, IConfiguration configuration) { var eventSources = GetEventSourceConfiguration(configuration); RESTServiceEventSource.Initialise(eventSources.RESTServiceEventSource); DataAssetEventSource.Initialise(eventSources.DataAssetEventSource); PlatformEventSource.Initialise(eventSources.PlatformEventSource); DatabaseContextEventSource.Initialise(eventSources.DatabaseContextEventSource); var eventSourceForRESTfulServices = RESTServiceEventSource.GetInstance(); var eventSourceForRESTfulDataAssets = DataAssetEventSource.GetInstance(); var eventSourceForPlatform = PlatformEventSource.GetInstance(); var eventSourceForDatabase = DatabaseContextEventSource.GetInstance(); var endpointConfigurationsConfigSection = configuration.GetSection("EndpointConfigurations"); services.Configure <RouteEndpointConfigurations>(endpointConfigurationsConfigSection); services.AddSingleton <IRESTServiceEventSource>(eventSourceForRESTfulServices); services.AddSingleton <IDataAssetEventSource>(eventSourceForRESTfulDataAssets); services.AddSingleton <IPlatformEventSource>(eventSourceForPlatform); services.AddSingleton <IApiEventSource>(ApiEventSource.Instance); services.AddSingleton <IDatabaseContextEventSource>(eventSourceForDatabase); }