Skip to content

Commit 019143f

Browse files
committed
fix: update startup mode for az functions
1 parent a0c2133 commit 019143f

5 files changed

Lines changed: 67 additions & 71 deletions

File tree

user-management/src/Stickerlandia.UserManagement.Agnostic/ServiceExtensions.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@ namespace Stickerlandia.UserManagement.Agnostic;
1919

2020
public static class ServiceExtensions
2121
{
22-
public static IHostApplicationBuilder AddAgnosticAdapters(this IHostApplicationBuilder builder)
22+
public static IServiceCollection AddAgnosticAdapters(this IServiceCollection services, IConfiguration configuration)
2323
{
24-
builder.AddKafkaMessaging();
25-
builder.Services.AddPostgresAuthServices(builder.Configuration);
24+
services.AddKafkaMessaging(configuration);
25+
services.AddPostgresAuthServices(configuration);
2626

27-
return builder;
27+
return services;
2828
}
2929

30-
public static IHostApplicationBuilder AddKafkaMessaging(this IHostApplicationBuilder builder)
30+
public static IServiceCollection AddKafkaMessaging(this IServiceCollection services, IConfiguration configuration)
3131
{
3232
var producerConfig = new ProducerConfig
3333
{
3434
// User-specific properties that you must set
35-
BootstrapServers = builder.Configuration.GetConnectionString("messaging"),
35+
BootstrapServers = configuration.GetConnectionString("messaging"),
3636
// Fixed properties
3737
SecurityProtocol = SecurityProtocol.Plaintext,
3838
Acks = Acks.All
@@ -41,22 +41,22 @@ public static IHostApplicationBuilder AddKafkaMessaging(this IHostApplicationBui
4141
var consumerConfig = new ConsumerConfig
4242
{
4343
// User-specific properties that you must set
44-
BootstrapServers = builder.Configuration.GetConnectionString("messaging"),
44+
BootstrapServers = configuration.GetConnectionString("messaging"),
4545
// Fixed properties
4646
SecurityProtocol = SecurityProtocol.Plaintext,
4747
GroupId = "stickerlandia-users",
4848
AutoOffsetReset = AutoOffsetReset.Earliest,
4949
EnableAutoCommit = false,
5050
};
5151

52-
builder.Services.AddSingleton(producerConfig);
53-
builder.Services.AddSingleton(consumerConfig);
52+
services.AddSingleton(producerConfig);
53+
services.AddSingleton(consumerConfig);
5454

5555
// Register event publisher as singleton
56-
builder.Services.AddSingleton<IUserEventPublisher, KafkaEventPublisher>();
57-
builder.Services.AddSingleton<IMessagingWorker, KafakStickerClaimedWorker>();
56+
services.AddSingleton<IUserEventPublisher, KafkaEventPublisher>();
57+
services.AddSingleton<IMessagingWorker, KafakStickerClaimedWorker>();
5858

59-
return builder;
59+
return services;
6060
}
6161

6262
public static IServiceCollection AddPostgresAuthServices(this IServiceCollection services,

user-management/src/Stickerlandia.UserManagement.Azure/ServiceExtensions.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ namespace Stickerlandia.UserManagement.Azure;
2222

2323
public static class ServiceExtensions
2424
{
25-
public static IHostApplicationBuilder AddAzureAdapters(this IHostApplicationBuilder builder)
25+
public static IServiceCollection AddAzureAdapters(this IServiceCollection services, IConfiguration configuration)
2626
{
27-
builder.Services.AddPostgresAuthServices(builder.Configuration);
27+
services.AddPostgresAuthServices(configuration);
2828

29-
builder.Services.AddSingleton<IMessagingWorker, ServiceBusStickerClaimedWorker>();
30-
builder.Services.AddSingleton(new ServiceBusClient(builder.Configuration["ConnectionStrings:messaging"]));
29+
services.AddSingleton<IMessagingWorker, ServiceBusStickerClaimedWorker>();
30+
services.AddSingleton(new ServiceBusClient(configuration["ConnectionStrings:messaging"]));
3131

32-
builder.Services.AddSingleton<IUserEventPublisher, ServiceBusEventPublisher>();
32+
services.AddSingleton<IUserEventPublisher, ServiceBusEventPublisher>();
3333

34-
return builder;
34+
return services;
3535
}
3636
}
Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,33 @@
11
using Microsoft.Azure.Functions.Worker;
2-
using Microsoft.Azure.Functions.Worker.Builder;
2+
using Microsoft.Extensions.Configuration;
33
using Microsoft.Extensions.DependencyInjection;
44
using Microsoft.Extensions.Hosting;
55
using Microsoft.Extensions.Logging;
66
using Serilog;
77
using Serilog.Events;
88
using Serilog.Extensions.Logging;
99
using Serilog.Formatting.Json;
10-
using Stickerlandia.UserManagement.Agnostic;
11-
using Stickerlandia.UserManagement.Azure;
12-
using Stickerlandia.UserManagement.Core;
13-
using Stickerlandia.UserManagement.FunctionApp.Middlewares;
1410
using Stickerlandia.UserManagement.ServiceDefaults;
1511

16-
var builder = FunctionsApplication.CreateBuilder(args);
17-
builder.ConfigureFunctionsWebApplication();
18-
builder.UseDefaultWorkerMiddleware();
19-
builder.AddServiceDefaults();
20-
21-
builder.UseMiddleware<ExceptionHandlingMiddleware>();
12+
var hostBuilder = new HostBuilder()
13+
.ConfigureFunctionsWebApplication()
14+
.ConfigureAppConfiguration(c => { c.AddEnvironmentVariables(); })
15+
.ConfigureServices((hostContext, services) =>
16+
services.AddApplicationInsightsTelemetryWorkerService()
17+
.ConfigureFunctionsApplicationInsights()
18+
.ConfigureDefaultUserManagementServices(hostContext.Configuration)
19+
.Configure<LoggerFilterOptions>(options =>
20+
{
21+
// The Application Insights SDK adds a default logging filter that instructs ILogger to capture only Warning and more severe logs. Application Insights requires an explicit override.
22+
// Log levels can also be configured using appsettings.json. For more information, see https://learn.microsoft.com/en-us/azure/azure-monitor/app/worker-service#ilogger-logs
23+
var toRemove = options.Rules.FirstOrDefault(rule =>
24+
rule.ProviderName
25+
== "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider"
26+
);
27+
28+
if (toRemove is not null) options.Rules.Remove(toRemove);
29+
})
30+
);
2231

2332
var logger = Log.Logger = new LoggerConfiguration()
2433
.MinimumLevel.Information()
@@ -30,27 +39,10 @@
3039
var appLogger = new SerilogLoggerFactory(logger)
3140
.CreateLogger<Program>();
3241

33-
// Application Insights isn't enabled by default. See https://aka.ms/AAt8mw4.
34-
builder.Services
35-
.AddApplicationInsightsTelemetryWorkerService()
36-
.ConfigureFunctionsApplicationInsights()
37-
.Configure<LoggerFilterOptions>(options =>
38-
{
39-
// The Application Insights SDK adds a default logging filter that instructs ILogger to capture only Warning and more severe logs. Application Insights requires an explicit override.
40-
// Log levels can also be configured using appsettings.json. For more information, see https://learn.microsoft.com/en-us/azure/azure-monitor/app/worker-service#ilogger-logs
41-
LoggerFilterRule? toRemove = options.Rules.FirstOrDefault(rule =>
42-
rule.ProviderName
43-
== "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider"
44-
);
45-
46-
if (toRemove is not null)
47-
{
48-
options.Rules.Remove(toRemove);
49-
}
50-
});
51-
52-
appLogger.LogInformation("Application started"); ;
53-
54-
var app = builder.Build();
42+
43+
appLogger.LogInformation("Application started");
44+
;
45+
46+
var app = hostBuilder.Build();
5547

5648
await app.RunAsync();

user-management/src/Stickerlandia.UserManagement.FunctionApp/Stickerlandia.UserManagement.FunctionApp.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@
1111
<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.19.0" />
1212
<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.23.0" />
1313
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.13" />
14+
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
1415
<PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="2.0.0" />
16+
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.0.2" />
1517
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Timer" Version="4.3.1" />
1618
<PackageReference Include="Serilog" Version="4.2.0" />
1719
<PackageReference Include="Serilog.Formatting.Compact" Version="3.0.0" />
1820
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
1921
<PackageReference Include="serilog.aspnetcore" Version="9.0.0" />
20-
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="2.0.0" />
21-
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.3.0" />
22-
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.0.2" />
2322
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.ServiceBus" Version="5.22.2" />
2423
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Kafka" Version="4.1.1" />
2524
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="2.0.4" />

user-management/src/Stickerlandia.UserManagement.ServiceDefaults/ServiceDefaults.cs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,42 @@ public static IHostApplicationBuilder AddServiceDefaults(this IHostApplicationBu
1717
{
1818
builder.Configuration.AddEnvironmentVariables();
1919
builder.Services.AddLogging();
20-
20+
builder.Services.ConfigureDefaultUserManagementServices(builder.Configuration);
21+
22+
if (builder is WebApplicationBuilder hostBuilder)
23+
hostBuilder.Host.UseSerilog((_, config) =>
24+
{
25+
config.MinimumLevel.Information()
26+
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
27+
.Enrich.FromLogContext()
28+
.WriteTo.Console(new JsonFormatter());
29+
});
30+
31+
return builder;
32+
}
33+
34+
public static IServiceCollection ConfigureDefaultUserManagementServices(this IServiceCollection services,
35+
IConfiguration configuration)
36+
{
2137
var drivenAdapters = Environment.GetEnvironmentVariable("DRIVEN") ?? "";
2238

2339
switch (drivenAdapters.ToUpper())
2440
{
2541
case "AZURE":
26-
builder.AddAzureAdapters();
42+
services.AddAzureAdapters(configuration);
2743
break;
2844
case "AGNOSTIC":
29-
builder.AddAgnosticAdapters();
45+
services.AddAgnosticAdapters(configuration);
3046
break;
3147
case "AWS":
3248
break;
3349
default:
3450
throw new ArgumentException($"Unknown driven adapters {drivenAdapters}");
3551
}
3652

37-
builder.Services
53+
services
3854
.AddStickerlandiaUserManagement();
39-
40-
if (builder is WebApplicationBuilder hostBuilder)
41-
{
42-
hostBuilder.Host.UseSerilog((_, config) =>
43-
{
44-
config.MinimumLevel.Information()
45-
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
46-
.Enrich.FromLogContext()
47-
.WriteTo.Console(new JsonFormatter());
48-
});
49-
}
50-
51-
return builder;
55+
56+
return services;
5257
}
5358
}

0 commit comments

Comments
 (0)