public HazelcastHealthCheck(IMessagePublisher messagePublisher, IMessagingClient messagingClient, HazelcastConfig configuration) { this.messagePublisher = messagePublisher; this.messagingClient = messagingClient; this.configuration = configuration; this.hzInstance = GetHazelcastInstance(); }
public static IHostBuilder CreateHostBuilder() { var hzConfiguration = new HazelcastConfig(); var emailSettings = new EmailSettings(); return(new HostBuilder() .ConfigureAppConfiguration((hostContext, configurationBuilder) => { var configurationRoot = configurationBuilder .AddJsonFile("appsettings.json") .AddEnvironmentVariables() .Build(); configurationRoot.Bind(nameof(HazelcastConfig), hzConfiguration); configurationRoot.Bind(nameof(EmailSettings), emailSettings); }) .ConfigureLogging(loggingBuilder => { loggingBuilder.ClearProviders(); loggingBuilder.UseLog4Net(new FileInfo("log4net.config")); }) .ConfigureSimpleInjector() .ConfigureContainer <Container>((hostBuilderContext, container) => { container.RegisterSingleton(() => hzConfiguration); // Register IMessagingClientFactory container.RegisterSingleton <IMessagingClientFactory, HazelcastMessagingClientFactory>(); // Register IMessagingClient container.RegisterSingleton(() => { var config = container.GetInstance <IConfiguration>(); var factory = container.GetInstance <IMessagingClientFactory>(); return factory.CreateClient(nameof(HazelcastConfig), config); }); // Register IMessagePublisher container.RegisterSingleton <IMessagePublisher>(container.GetInstance <IMessagingClient>); // Register IMessageSubscriber container.RegisterSingleton <IMessageSubscriber>(container.GetInstance <IMessagingClient>); // Register data context container.RegisterSingleton(() => new OrganizationServiceDataContextFactory { LoggerFactory = container.GetInstance <ILoggerFactory>() }); //Register Email Service container.RegisterSingleton(() => new EmailService(emailSettings)); container.RegisterScoped(() => { var factory = container.GetInstance <OrganizationServiceDataContextFactory>(); var connectionString = hostBuilderContext.Configuration.GetConnectionString(nameof(OrganizationServiceDataContext)); return factory.CreateDbContext(connectionString); }); // Register repositories DependencyInjectionRegistration.RegisterRepositories(container); // Register services DependencyInjectionRegistration.RegisterServices(container); //Register subscribers DependencyInjectionRegistration.RegisterSubscribers(container); //Register healthchecks DependencyInjectionRegistration.RegisterHealthChecks(container); }) .AddGrpcService <ProfileController>() .AddGrpcService <OrganizationController>() .AddGrpcService <OrganizationUserController>() .AddGrpcService <GroupController>() .AddGrpcService <GroupAuthorizationController>() .AddGrpcService <AuthorizationController>() .AddGrpcService <UserInvitationController>() .AddGrpcService <HealthController>() .ConfigureGrpcServer( Assembly.GetEntryAssembly().GetName().Name, (hostBuilderContext) => { var config = new TracingConfig(); hostBuilderContext.Configuration.Bind(nameof(TracingConfig), config); return config; }, (hostBuilderContext, c, logger, serverServiceDefinitions, interceptors) => { var server = new Server(); var config = new GrpcConfig(); hostBuilderContext.Configuration.Bind(nameof(GrpcConfig), config); server.Ports.Add(new ServerPort(config.Host, config.Port, ServerCredentials.Insecure)); GrpcEnvironment.SetLogger(logger); serverServiceDefinitions .ToList() .ForEach(x => { server.Services.Add(x.Intercept(interceptors.ToArray())); }); return server; }) .ConfigureContainer <Container>(container => container.Verify())); }