diff --git a/Directory.Packages.props b/Directory.Packages.props index 78ac63050..35bb39096 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -263,6 +263,19 @@ + + + + + + + + + + + + + @@ -323,15 +336,6 @@ - - - - - - - - - diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Program.cs b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Program.cs index bcbd401f8..a2990eb30 100644 --- a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Program.cs +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/Program.cs @@ -26,26 +26,6 @@ try builder.AddServiceDefaults(); - void LogConfig(IConfiguration config, int index = 0) - { - var prefix = ""; - for (var i = 0; i < index; i++) - { - prefix = "-" + prefix; - } - var children = config.GetChildren(); - if (children.Any()) - { - foreach (var childrenConfig in children) - { - Log.Logger.Information("{prefix}Config: {key}, Value: {value}", prefix, childrenConfig.Key, childrenConfig.Value); - LogConfig(childrenConfig, index + 1); - } - } - } - - LogConfig(builder.Configuration); - await builder.AddApplicationAsync(options => { var applicationName = Environment.GetEnvironmentVariable("APPLICATION_NAME") ?? "AdminService"; diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/ConfigurationExtensions.cs b/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/ConfigurationExtensions.cs new file mode 100644 index 000000000..5f7e12511 --- /dev/null +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/ConfigurationExtensions.cs @@ -0,0 +1,72 @@ +using Microsoft.Extensions.Configuration; + +namespace Microsoft.Extensions.Hosting; + +public static class ConfigurationExtensions +{ + public static TBuilder MapDefaultConfiguration(this TBuilder builder) where TBuilder : IHostApplicationBuilder + { + builder.AddRedisClient("redis"); + builder.AddRabbitMQClient("rabbitmq"); + builder.AddElasticsearchClient("elasticsearch"); + + // CAP PostgreSql + builder.Configuration["CAP:PostgreSql:ConnectionString"] = builder.Configuration.GetConnectionString("Default"); + + // CAP RabbitMQ + builder.Configuration["CAP:RabbitMQ:HostName"] = builder.Configuration["RABBITMQ_HOST"]; + builder.Configuration["CAP:RabbitMQ:UserName"] = builder.Configuration["RABBITMQ_USERNAME"]; + builder.Configuration["CAP:RabbitMQ:Password"] = builder.Configuration["RABBITMQ_PASSWORD"]; + builder.Configuration["CAP:RabbitMQ:Port"] = builder.Configuration["RABBITMQ_PORT"]; + + // Abp RabbitMQ + builder.Configuration["RabbitMQ:Default:HostName"] = builder.Configuration["RABBITMQ_HOST"]; + builder.Configuration["RabbitMQ:Default:UserName"] = builder.Configuration["RABBITMQ_USERNAME"]; + builder.Configuration["RabbitMQ:Default:Password"] = builder.Configuration["RABBITMQ_PASSWORD"]; + builder.Configuration["RabbitMQ:Default:Port"] = builder.Configuration["RABBITMQ_PORT"]; + + // Elsa RabbitMQ + builder.Configuration["Elsa:Rebus:RabbitMQ:Connection"] = builder.Configuration.GetConnectionString("RabbitMQ"); + + // Redis + var redisConnectionString = builder.Configuration.GetConnectionString("Redis"); + builder.Configuration["Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=10"; + + // DistributedLock + builder.Configuration["DistributedLock:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=11"; + + // Features + builder.Configuration["Features:Validation:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=12"; + + // SignalR + builder.Configuration["SignalR:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=13,channelPrefix=abp-realtime-channel"; + + // Elasticsearch + var elasticSearchUrl = builder.Configuration.GetConnectionString("Elasticsearch"); + var serialogEsConfig = builder.Configuration.GetSection("Serilog:WriteTo"); + + void ReplaceElasticsearchLogging(IConfiguration configuration) + { + foreach (var config in configuration.GetChildren()) + { + if (string.Equals(config["Name"], "Async", StringComparison.InvariantCultureIgnoreCase)) + { + var configureArgs = config.GetSection("Args:configure"); + ReplaceElasticsearchLogging(configureArgs); + } + if (string.Equals(config["Name"], "Elasticsearch", StringComparison.InvariantCultureIgnoreCase)) + { + config["Args:nodeUris"] = elasticSearchUrl; + } + } + } + + if (serialogEsConfig.Exists()) + { + ReplaceElasticsearchLogging(serialogEsConfig); + } + builder.Configuration["Elasticsearch:NodeUris"] = elasticSearchUrl; + + return builder; + } +} diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/Extensions.cs b/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/Extensions.cs index c8e23fafd..56306a60c 100644 --- a/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/Extensions.cs +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/Extensions.cs @@ -1,13 +1,11 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Diagnostics.HealthChecks; using Microsoft.Extensions.Logging; using OpenTelemetry; using OpenTelemetry.Metrics; using OpenTelemetry.Trace; -using System; namespace Microsoft.Extensions.Hosting; @@ -23,7 +21,7 @@ public static class Extensions { builder.ConfigureOpenTelemetry(); - builder.ReplaceDefaultConfiguration(); + builder.MapDefaultConfiguration(); builder.AddDefaultHealthChecks(); @@ -76,6 +74,7 @@ public static class Extensions //.AddGrpcClientInstrumentation() .AddHttpClientInstrumentation() .AddCapInstrumentation() + .AddQuartzInstrumentation() .AddEntityFrameworkCoreInstrumentation(); }); @@ -84,72 +83,6 @@ public static class Extensions return builder; } - public static TBuilder ReplaceDefaultConfiguration(this TBuilder builder) where TBuilder : IHostApplicationBuilder - { - builder.AddRedisClient("redis"); - builder.AddRabbitMQClient("rabbitmq"); - builder.AddElasticsearchClient("elasticsearch"); - - // CAP PostgreSql - builder.Configuration["CAP:PostgreSql:ConnectionString"] = builder.Configuration.GetConnectionString("Default"); - - // CAP RabbitMQ - builder.Configuration["CAP:RabbitMQ:HostName"] = builder.Configuration["RABBITMQ_HOST"]; - builder.Configuration["CAP:RabbitMQ:UserName"] = builder.Configuration["RABBITMQ_USERNAME"]; - builder.Configuration["CAP:RabbitMQ:Password"] = builder.Configuration["RABBITMQ_PASSWORD"]; - builder.Configuration["CAP:RabbitMQ:Port"] = builder.Configuration["RABBITMQ_PORT"]; - - // Abp RabbitMQ - builder.Configuration["RabbitMQ:Default:HostName"] = builder.Configuration["RABBITMQ_HOST"]; - builder.Configuration["RabbitMQ:Default:UserName"] = builder.Configuration["RABBITMQ_USERNAME"]; - builder.Configuration["RabbitMQ:Default:Password"] = builder.Configuration["RABBITMQ_PASSWORD"]; - builder.Configuration["RabbitMQ:Default:Port"] = builder.Configuration["RABBITMQ_PORT"]; - - // Elsa RabbitMQ - builder.Configuration["Elsa:Rebus:RabbitMQ:Connection"] = builder.Configuration.GetConnectionString("RabbitMQ"); - - // Redis - var redisConnectionString = builder.Configuration.GetConnectionString("Redis"); - builder.Configuration["Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=10"; - - // DistributedLock - builder.Configuration["DistributedLock:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=11"; - - // Features - builder.Configuration["Features:Validation:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=12"; - - // SignalR - builder.Configuration["SignalR:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=13,channelPrefix=abp-realtime-channel"; - - // Elasticsearch - var elasticSearchUrl = builder.Configuration.GetConnectionString("Elasticsearch"); - var serialogEsConfig = builder.Configuration.GetSection("Serilog:WriteTo"); - - void ReplaceElasticsearchLogging(IConfiguration configuration) - { - foreach (var config in configuration.GetChildren()) - { - if (string.Equals(config["Name"], "Async", StringComparison.InvariantCultureIgnoreCase)) - { - var configureArgs = config.GetSection("Args:configure"); - ReplaceElasticsearchLogging(configureArgs); - } - if (string.Equals(config["Name"], "Elasticsearch", StringComparison.InvariantCultureIgnoreCase)) - { - config["Args:nodeUris"] = elasticSearchUrl; - } - } - } - - if (serialogEsConfig.Exists()) - { - ReplaceElasticsearchLogging(serialogEsConfig); - } - builder.Configuration["Elasticsearch:NodeUris"] = elasticSearchUrl; - - return builder; - } - private static TBuilder AddOpenTelemetryExporters(this TBuilder builder) where TBuilder : IHostApplicationBuilder { var useOtlpExporter = !string.IsNullOrWhiteSpace(builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]); diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/LINGYUN.Abp.MicroService.ServiceDefaults.csproj b/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/LINGYUN.Abp.MicroService.ServiceDefaults.csproj index 1dbc33319..0eedea1dd 100644 --- a/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/LINGYUN.Abp.MicroService.ServiceDefaults.csproj +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.ServiceDefaults/LINGYUN.Abp.MicroService.ServiceDefaults.csproj @@ -21,6 +21,7 @@ +