Skip to content

Commit d29f6c2

Browse files
author
ericuss
committed
Add health check in Ordering.BackgroundTask project
1 parent 0988dcd commit d29f6c2

6 files changed

Lines changed: 93 additions & 35 deletions

File tree

docker-compose.override.yml

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -342,20 +342,22 @@ services:
342342
- HealthChecks-UI__HealthChecks__7__Uri=http://webmarketingapigw/hc
343343
- HealthChecks-UI__HealthChecks__8__Name=Ordering HTTP Check
344344
- HealthChecks-UI__HealthChecks__8__Uri=http://ordering.api/hc
345-
- HealthChecks-UI__HealthChecks__10__Name=Basket HTTP Check
346-
- HealthChecks-UI__HealthChecks__10__Uri=http://basket.api/hc
347-
- HealthChecks-UI__HealthChecks__11__Name=Catalog HTTP Check
348-
- HealthChecks-UI__HealthChecks__11__Uri=http://catalog.api/hc
349-
- HealthChecks-UI__HealthChecks__12__Name=Identity HTTP Check
350-
- HealthChecks-UI__HealthChecks__12__Uri=http://identity.api/hc
351-
- HealthChecks-UI__HealthChecks__13__Name=Marketing HTTP Check
352-
- HealthChecks-UI__HealthChecks__13__Uri=http://marketing.api/hc
353-
- HealthChecks-UI__HealthChecks__14__Name=Locations HTTP Check
354-
- HealthChecks-UI__HealthChecks__14__Uri=http://locations.api/hc
355-
- HealthChecks-UI__HealthChecks__15__Name=Payments HTTP Check
356-
- HealthChecks-UI__HealthChecks__15__Uri=http://payment.api/hc
357-
- HealthChecks-UI__HealthChecks__16__Name=Ordering SignalRHub HTTP Check
358-
- HealthChecks-UI__HealthChecks__16__Uri=http://ordering.signalrhub/hc
345+
- HealthChecks-UI__HealthChecks__9__Name=Basket HTTP Check
346+
- HealthChecks-UI__HealthChecks__9__Uri=http://basket.api/hc
347+
- HealthChecks-UI__HealthChecks__10__Name=Catalog HTTP Check
348+
- HealthChecks-UI__HealthChecks__10__Uri=http://catalog.api/hc
349+
- HealthChecks-UI__HealthChecks__11__Name=Identity HTTP Check
350+
- HealthChecks-UI__HealthChecks__11__Uri=http://identity.api/hc
351+
- HealthChecks-UI__HealthChecks__12__Name=Marketing HTTP Check
352+
- HealthChecks-UI__HealthChecks__12__Uri=http://marketing.api/hc
353+
- HealthChecks-UI__HealthChecks__13__Name=Locations HTTP Check
354+
- HealthChecks-UI__HealthChecks__13__Uri=http://locations.api/hc
355+
- HealthChecks-UI__HealthChecks__14__Name=Payments HTTP Check
356+
- HealthChecks-UI__HealthChecks__14__Uri=http://payment.api/hc
357+
- HealthChecks-UI__HealthChecks__15__Name=Ordering SignalRHub HTTP Check
358+
- HealthChecks-UI__HealthChecks__15__Uri=http://ordering.signalrhub/hc
359+
- HealthChecks-UI__HealthChecks__16__Name=Ordering HTTP Background Check
360+
- HealthChecks-UI__HealthChecks__16__Uri=http://ordering.backgroundtasks/hc
359361
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
360362
- OrchestratorType=${ORCHESTRATOR_TYPE}
361363
ports:

src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM mcr.microsoft.com/dotnet/core/runtime:3.0-buster-slim AS base
1+
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
22
WORKDIR /app
33
EXPOSE 80
44

src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,25 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12+
<PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="$(AspNetCore_HealthChecks_AzureServiceBus)" />
13+
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="$(AspNetCore_HealthChecks_Rabbitmq)" />
14+
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="$(AspNetCore_HealthChecks_SqlServer)" />
15+
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="$(AspNetCore_HealthChecks_UI_Client)" />
16+
<PackageReference Include="Autofac" Version="$(Autofac)" />
17+
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="$(Autofac_Extensions_DependencyInjection)" />
18+
<PackageReference Include="Dapper" Version="$(Dapper)" />
19+
<PackageReference Include="Microsoft.AspNetCore.App" Version="3.0.0-preview7.19365.7" />
1220
<PackageReference Include="Microsoft.Extensions.Hosting" Version="$(Microsoft_Extensions_Hosting)" />
1321
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="$(Microsoft_VisualStudio_Azure_Containers_Tools_Targets)" />
14-
<PackageReference Include="Dapper" Version="$(Dapper)" />
22+
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="$(Microsoft_AspNetCore_Diagnostics_HealthChecks)" />
23+
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="$(Microsoft_AspNetCore_Http_Abstractions_3_0)" />
24+
1525
<PackageReference Include="Serilog.AspNetCore" Version="$(Serilog_AspNetCore)" />
1626
<PackageReference Include="Serilog.Enrichers.Environment" Version="$(Serilog_Enrichers_Environment)" />
1727
<PackageReference Include="Serilog.Settings.Configuration" Version="$(Serilog_Settings_Configuration)" />
1828
<PackageReference Include="Serilog.Sinks.Console" Version="$(Serilog_Sinks_Console)" />
1929
<PackageReference Include="Serilog.Sinks.Seq" Version="$(Serilog_Sinks_Seq)" />
2030
<PackageReference Include="Serilog.Sinks.Http" Version="$(Serilog_Sinks_Http)" />
21-
<PackageReference Include="Autofac" Version="$(Autofac)" />
22-
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="$(Autofac_Extensions_DependencyInjection)" />
23-
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="$(Microsoft_AspNetCore_Diagnostics_HealthChecks)" />
24-
<PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="$(AspNetCore_HealthChecks_AzureServiceBus)" />
25-
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="$(AspNetCore_HealthChecks_Rabbitmq)" />
26-
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="$(AspNetCore_HealthChecks_SqlServer)" />
2731
</ItemGroup>
2832

2933
<ItemGroup>

src/Services/Ordering/Ordering.BackgroundTasks/Program.cs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@
66
using Ordering.BackgroundTasks.Tasks;
77
using Serilog;
88
using System.IO;
9+
using Microsoft.AspNetCore;
10+
using Microsoft.AspNetCore.Hosting;
911

1012
namespace Ordering.BackgroundTasks
1113
{
1214
public class Program
1315
{
1416
public static void Main(string[] args)
1517
{
16-
CreateHostBuilder(args).Build().Run();
18+
CreateHostBuilder(args).Run();
1719
}
1820

19-
public static IHostBuilder CreateHostBuilder(string[] args) =>
20-
Host.CreateDefaultBuilder(args)
21+
public static IWebHost CreateHostBuilder(string[] args) =>
22+
WebHost.CreateDefaultBuilder(args)
2123
.ConfigureAppConfiguration((host, builder) =>
2224
{
2325
builder.SetBasePath(Directory.GetCurrentDirectory());
@@ -27,15 +29,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) =>
2729
builder.AddCommandLine(args);
2830
})
2931
.ConfigureLogging((host, builder) => builder.UseSerilog(host.Configuration).AddSerilog())
30-
.ConfigureServices((host, services) =>
31-
{
32-
services.AddCustomHealthCheck(host.Configuration);
33-
services.Configure<BackgroundTaskSettings>(host.Configuration);
34-
services.AddOptions();
35-
services.AddHostedService<GracePeriodManagerService>();
36-
services.AddEventBus(host.Configuration);
37-
services.AddAutofac(container => container.Populate(services));
38-
})
39-
.UseServiceProviderFactory(new AutofacServiceProviderFactory());
32+
.UseStartup<Startup>()
33+
.Build();
4034
}
4135
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
namespace Ordering.BackgroundTasks
2+
{
3+
using Autofac;
4+
using Autofac.Extensions.DependencyInjection;
5+
using Microsoft.AspNetCore.Builder;
6+
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
7+
using Microsoft.Extensions.Configuration;
8+
using Microsoft.Extensions.DependencyInjection;
9+
using Microsoft.Extensions.Logging;
10+
using Ordering.BackgroundTasks.Extensions;
11+
using Ordering.BackgroundTasks.Tasks;
12+
using System;
13+
using HealthChecks.UI.Client;
14+
15+
public class Startup
16+
{
17+
public Startup(IConfiguration configuration)
18+
{
19+
Configuration = configuration;
20+
}
21+
22+
public IConfiguration Configuration { get; }
23+
24+
public virtual IServiceProvider ConfigureServices(IServiceCollection services)
25+
{
26+
services.AddCustomHealthCheck(this.Configuration)
27+
.Configure<BackgroundTaskSettings>(this.Configuration)
28+
.AddOptions()
29+
.AddHostedService<GracePeriodManagerService>()
30+
.AddEventBus(this.Configuration)
31+
.AddAutofac(container => container.Populate(services));
32+
33+
var container = new ContainerBuilder();
34+
container.Populate(services);
35+
36+
return new AutofacServiceProvider(container.Build());
37+
}
38+
39+
40+
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
41+
{
42+
app.UseRouting();
43+
app.UseEndpoints(endpoints =>
44+
{
45+
endpoints.MapHealthChecks("/hc", new HealthCheckOptions()
46+
{
47+
Predicate = _ => true,
48+
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
49+
});
50+
endpoints.MapHealthChecks("/liveness", new HealthCheckOptions
51+
{
52+
Predicate = r => r.Name.Contains("self")
53+
});
54+
});
55+
}
56+
}
57+
}

src/_build/dependencies.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
<Microsoft_AspNetCore_Diagnostics_HealthChecks>2.2.0</Microsoft_AspNetCore_Diagnostics_HealthChecks>
5959
<Microsoft_AspNetCore_HealthChecks>1.0.0</Microsoft_AspNetCore_HealthChecks>
6060
<Microsoft_AspNetCore_Http_Abstractions>2.2.0</Microsoft_AspNetCore_Http_Abstractions>
61+
<Microsoft_AspNetCore_Http_Abstractions_3_0>3.0.0-preview4-19123-01</Microsoft_AspNetCore_Http_Abstractions_3_0>
6162
<Microsoft_AspNetCore_Mvc_Testing>3.0.0-preview6.19307.2</Microsoft_AspNetCore_Mvc_Testing>
6263
<Microsoft_AspNetCore_TestHost>3.0.0-preview7.19365.7</Microsoft_AspNetCore_TestHost>
6364
<Microsoft_AspNetCore_Identity_EntityFrameworkCore>3.0.0-preview7.19365.7</Microsoft_AspNetCore_Identity_EntityFrameworkCore>

0 commit comments

Comments
 (0)