diff --git a/src/Services/Payment/Payment.API/GlobalUsings.cs b/src/Services/Payment/Payment.API/GlobalUsings.cs
index 023296a1c..a29434a61 100644
--- a/src/Services/Payment/Payment.API/GlobalUsings.cs
+++ b/src/Services/Payment/Payment.API/GlobalUsings.cs
@@ -1,25 +1,11 @@
-global using Azure.Core;
-global using Azure.Identity;
-global using HealthChecks.UI.Client;
-global using Microsoft.AspNetCore.Diagnostics.HealthChecks;
+global using System.Threading.Tasks;
global using Microsoft.AspNetCore.Builder;
-global using Microsoft.AspNetCore;
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
-global using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
-global using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ;
-global using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus;
+global using Microsoft.eShopOnContainers.Payment.API;
+global using Microsoft.eShopOnContainers.Payment.API.IntegrationEvents.EventHandling;
global using Microsoft.eShopOnContainers.Payment.API.IntegrationEvents.Events;
-global using Microsoft.Extensions.Diagnostics.HealthChecks;
-global using Microsoft.Extensions.Options;
-global using Microsoft.Extensions.Configuration;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Logging;
-global using Microsoft.eShopOnContainers.Payment.API.IntegrationEvents.EventHandling;
-global using Microsoft.eShopOnContainers.Payment.API;
-global using RabbitMQ.Client;
-global using System.Threading.Tasks;
-global using System;
-global using System.IO;
-global using Microsoft.AspNetCore.Hosting;
-global using Microsoft.Extensions.Hosting;
+global using Microsoft.Extensions.Options;
+global using Services.Common;
diff --git a/src/Services/Payment/Payment.API/Payment.API.csproj b/src/Services/Payment/Payment.API/Payment.API.csproj
index f6b9637f0..6dc523a2e 100644
--- a/src/Services/Payment/Payment.API/Payment.API.csproj
+++ b/src/Services/Payment/Payment.API/Payment.API.csproj
@@ -3,29 +3,10 @@
net7.0
..\..\..\..\docker-compose.dcproj
- $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
- false
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/Services/Payment/Payment.API/Program.cs b/src/Services/Payment/Payment.API/Program.cs
index c1d2fe5f1..89daeb463 100644
--- a/src/Services/Payment/Payment.API/Program.cs
+++ b/src/Services/Payment/Payment.API/Program.cs
@@ -1,158 +1,22 @@
var builder = WebApplication.CreateBuilder(args);
-if (builder.Configuration.GetValue("UseVault", false))
-{
- TokenCredential credential = new ClientSecretCredential(
- builder.Configuration["Vault:TenantId"],
- builder.Configuration["Vault:ClientId"],
- builder.Configuration["Vault:ClientSecret"]);
- builder.Configuration.AddAzureKeyVault(new Uri($"https://{builder.Configuration["Vault:Name"]}.vault.azure.net/"), credential);
-}
-builder.Configuration.SetBasePath(Directory.GetCurrentDirectory());
-builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
-builder.Configuration.AddEnvironmentVariables();
-builder.WebHost.CaptureStartupErrors(false);
-builder.Services
- .AddCustomHealthCheck(builder.Configuration);
-builder.Services.Configure(builder.Configuration);
-builder.Services.AddApplicationInsightsTelemetry(builder.Configuration);
-if (builder.Configuration.GetValue("AzureServiceBusEnabled"))
-{
- builder.Services.AddSingleton(sp =>
- {
- var serviceBusConnectionString = builder.Configuration["EventBusConnection"];
- var subscriptionClientName = builder.Configuration["SubscriptionClientName"];
- return new DefaultServiceBusPersisterConnection(serviceBusConnectionString);
- });
-}
-else
-{
- builder.Services.AddSingleton(sp =>
- {
- var logger = sp.GetRequiredService>();
- var factory = new ConnectionFactory()
- {
- HostName = builder.Configuration["EventBusConnection"],
- DispatchConsumersAsync = true
- };
+builder.AddServiceDefaults();
- if (!string.IsNullOrEmpty(builder.Configuration["EventBusUserName"]))
- {
- factory.UserName = builder.Configuration["EventBusUserName"];
- }
-
- if (!string.IsNullOrEmpty(builder.Configuration["EventBusPassword"]))
- {
- factory.Password = builder.Configuration["EventBusPassword"];
- }
+builder.Services.Configure(builder.Configuration);
- var retryCount = 5;
- if (!string.IsNullOrEmpty(builder.Configuration["EventBusRetryCount"]))
- {
- retryCount = int.Parse(builder.Configuration["EventBusRetryCount"]);
- }
+builder.Services.AddTransient();
- return new DefaultRabbitMQPersistentConnection(factory, logger, retryCount);
- });
-}
-RegisterEventBus(builder.Services);
var app = builder.Build();
-if (!app.Environment.IsDevelopment())
-{
- app.UseExceptionHandler("/Home/Error");
-}
-
-var pathBase = app.Configuration["PATH_BASE"];
-if (!string.IsNullOrEmpty(pathBase))
-{
- app.UsePathBase(pathBase);
-}
-
-ConfigureEventBus(app);
-app.UseRouting();
-app.MapHealthChecks("/hc", new HealthCheckOptions()
+if (!await app.CheckHealthAsync())
{
- Predicate = _ => true,
- ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
-});
-app.MapHealthChecks("/liveness", new HealthCheckOptions
-{
- Predicate = r => r.Name.Contains("self")
-});
-
-await app.RunAsync();
-
-void RegisterEventBus(IServiceCollection services)
-{
- if (builder.Configuration.GetValue("AzureServiceBusEnabled"))
- {
- services.AddSingleton(sp =>
- {
- var serviceBusPersisterConnection = sp.GetRequiredService();
- var logger = sp.GetRequiredService>();
- var eventBusSubcriptionsManager = sp.GetRequiredService();
- string subscriptionName = builder.Configuration["SubscriptionClientName"];
-
- return new EventBusServiceBus(serviceBusPersisterConnection, logger,
- eventBusSubcriptionsManager, sp, subscriptionName);
- });
- }
- else
- {
- services.AddSingleton(sp =>
- {
- var subscriptionClientName = builder.Configuration["SubscriptionClientName"];
- var rabbitMQPersistentConnection = sp.GetRequiredService();
- var logger = sp.GetRequiredService>();
- var eventBusSubcriptionsManager = sp.GetRequiredService();
-
- var retryCount = 5;
- if (!string.IsNullOrEmpty(builder.Configuration["EventBusRetryCount"]))
- {
- retryCount = int.Parse(builder.Configuration["EventBusRetryCount"]);
- }
-
- return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, sp, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
- });
- }
-
- services.AddTransient();
- services.AddSingleton();
+ return;
}
-void ConfigureEventBus(IApplicationBuilder app)
-{
- var eventBus = app.ApplicationServices.GetRequiredService();
- eventBus.Subscribe();
-}
+app.UseServiceDefaults();
-public static class CustomExtensionMethods
-{
- public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services, IConfiguration configuration)
- {
- var hcBuilder = services.AddHealthChecks();
+var eventBus = app.Services.GetRequiredService();
- hcBuilder.AddCheck("self", () => HealthCheckResult.Healthy());
+eventBus.Subscribe();
- if (configuration.GetValue("AzureServiceBusEnabled"))
- {
- hcBuilder
- .AddAzureServiceBusTopic(
- configuration["EventBusConnection"],
- topicName: "eshop_event_bus",
- name: "payment-servicebus-check",
- tags: new string[] { "servicebus" });
- }
- else
- {
- hcBuilder
- .AddRabbitMQ(
- $"amqp://{configuration["EventBusConnection"]}",
- name: "payment-rabbitmqbus-check",
- tags: new string[] { "rabbitmqbus" });
- }
-
- return services;
- }
-}
+await app.RunAsync();
diff --git a/src/Services/Payment/Payment.API/appsettings.json b/src/Services/Payment/Payment.API/appsettings.json
index 41de245fb..71e1aa6af 100644
--- a/src/Services/Payment/Payment.API/appsettings.json
+++ b/src/Services/Payment/Payment.API/appsettings.json
@@ -1,9 +1,16 @@
{
- "PaymentSucceeded": true,
- "AzureServiceBusEnabled": false,
- "SubscriptionClientName": "Payment",
- "ApplicationInsights": {
- "InstrumentationKey": ""
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
},
- "EventBusRetryCount": 5
-}
+ "ConnectionStrings": {
+ "EventBus": "localhost"
+ },
+ "EventBus": {
+ "SubscriptionClientName": "Payment",
+ "RetryCount": 5
+ },
+ "PaymentSucceeded": true
+}
\ No newline at end of file
diff --git a/src/Services/Services.Common/CommonExtensions.cs b/src/Services/Services.Common/CommonExtensions.cs
index c3b9672a5..b922d6cc4 100644
--- a/src/Services/Services.Common/CommonExtensions.cs
+++ b/src/Services/Services.Common/CommonExtensions.cs
@@ -289,23 +289,21 @@ public static class CommonExtensions
// {
// "EventBus": {
// "ProviderName": "ServiceBus | RabbitMQ",
-
// }
// }
var eventBusSection = configuration.GetRequiredSection("EventBus");
- var eventBusConnectionString = configuration.GetRequiredConnectionString("EventBus");
return eventBusSection["ProviderName"]?.ToLowerInvariant() switch
{
"servicebus" => hcBuilder.AddAzureServiceBusTopic(
- eventBusConnectionString,
- topicName: "eshop_event_bus",
+ _ => configuration.GetRequiredConnectionString("EventBus"),
+ _ => "eshop_event_bus",
name: "servicebus",
tags: new string[] { "ready" }),
_ => hcBuilder.AddRabbitMQ(
- $"amqp://{eventBusConnectionString}",
+ _ => $"amqp://{configuration.GetRequiredConnectionString("EventBus")}",
name: "rabbitmq",
tags: new string[] { "ready" })
};