From 3acd556c5c9bffa74e7f4547656228d8fd17f357 Mon Sep 17 00:00:00 2001 From: Christian Arenas Date: Wed, 24 May 2017 15:33:05 +0200 Subject: [PATCH] - Declare new ServiceBus instance with "AzureServiceBus" boolean condition DI - Add ServiceBusConnection and AzureServiceBus variables in settings - Add EventBusServiceBus dependencies --- .../Catalog/Catalog.API/Catalog.API.csproj | 1 + .../Catalog/Catalog.API/CatalogSettings.cs | 2 + src/Services/Catalog/Catalog.API/Startup.cs | 59 +++++++++++++++---- .../Catalog/Catalog.API/settings.json | 4 +- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/src/Services/Catalog/Catalog.API/Catalog.API.csproj b/src/Services/Catalog/Catalog.API/Catalog.API.csproj index 4306d6922..ff69bff56 100644 --- a/src/Services/Catalog/Catalog.API/Catalog.API.csproj +++ b/src/Services/Catalog/Catalog.API/Catalog.API.csproj @@ -57,6 +57,7 @@ + diff --git a/src/Services/Catalog/Catalog.API/CatalogSettings.cs b/src/Services/Catalog/Catalog.API/CatalogSettings.cs index af6e0ab13..5ef5b973c 100644 --- a/src/Services/Catalog/Catalog.API/CatalogSettings.cs +++ b/src/Services/Catalog/Catalog.API/CatalogSettings.cs @@ -5,5 +5,7 @@ public string ExternalCatalogBaseUrl {get;set;} public string EventBusConnection { get; set; } + + public string ServiceBusConnection { get; set; } } } diff --git a/src/Services/Catalog/Catalog.API/Startup.cs b/src/Services/Catalog/Catalog.API/Startup.cs index 65fb26515..8434a40d2 100644 --- a/src/Services/Catalog/Catalog.API/Startup.cs +++ b/src/Services/Catalog/Catalog.API/Startup.cs @@ -4,11 +4,13 @@ using global::Catalog.API.IntegrationEvents; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; + using Microsoft.Azure.ServiceBus; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.eShopOnContainers.BuildingBlocks.EventBus; using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ; + using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus; using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Services; using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure; @@ -109,20 +111,34 @@ services.AddTransient(); - services.AddSingleton(sp => + if (Configuration.GetValue("AzureServiceBus")) { - var settings = sp.GetRequiredService>().Value; - var logger = sp.GetRequiredService>(); - var factory = new ConnectionFactory() + services.AddSingleton(sp => { - HostName = settings.EventBusConnection - }; + var settings = sp.GetRequiredService>().Value; + var logger = sp.GetRequiredService>(); - return new DefaultRabbitMQPersistentConnection(factory, logger); - }); + var serviceBusConnection = new ServiceBusConnectionStringBuilder(settings.ServiceBusConnection); - services.AddSingleton(); - services.AddSingleton(); + return new DefaultServiceBusPersisterConnection(serviceBusConnection, TimeSpan.FromSeconds(5), RetryPolicy.Default, logger); + }); + } + else + { + services.AddSingleton(sp => + { + var settings = sp.GetRequiredService>().Value; + var logger = sp.GetRequiredService>(); + var factory = new ConnectionFactory() + { + HostName = settings.EventBusConnection + }; + + return new DefaultRabbitMQPersistentConnection(factory, logger); + }); + } + + RegisterServiceBus(services); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) @@ -179,5 +195,28 @@ ctx.Database.CloseConnection(); } } + + private void RegisterServiceBus(IServiceCollection services) + { + if (Configuration.GetValue("AzureServiceBus")) + { + services.AddSingleton(sp => + { + var serviceBusPersisterConnection = sp.GetRequiredService(); + var logger = sp.GetRequiredService>(); + var eventBusSubcriptionsManager = sp.GetRequiredService(); + var subscriptionClientName = "Catalog"; + + return new EventBusServiceBus(serviceBusPersisterConnection, logger, + eventBusSubcriptionsManager, subscriptionClientName); + }); + } + else + { + services.AddSingleton(); + } + + services.AddSingleton(); + } } } diff --git a/src/Services/Catalog/Catalog.API/settings.json b/src/Services/Catalog/Catalog.API/settings.json index e67fec713..7d80981e7 100644 --- a/src/Services/Catalog/Catalog.API/settings.json +++ b/src/Services/Catalog/Catalog.API/settings.json @@ -8,5 +8,7 @@ "System": "Information", "Microsoft": "Information" } - } + }, + "ServiceBusConnection": "Endpoint=sb://eshoponazuretest.servicebus.windows.net/;SharedAccessKeyName=Root;SharedAccessKey=Xo9wlr4bRv5iqTTditgFhTeZqxIpczaAUqfspo+QE/s=;EntityPath=eshop_event_bus", + "AzureServiceBus": "true" }