From 721a4fd02b9c56be0e0e3063c6c0f57db99cae1f Mon Sep 17 00:00:00 2001 From: Christian Arenas Date: Wed, 24 May 2017 15:33:38 +0200 Subject: [PATCH] - Declare new ServiceBus instance with "AzureServiceBus" boolean condition DI - Add ServiceBusConnection and AzureServiceBus variables in settings - Add EventBusServiceBus dependencies --- .../Basket/Basket.API/Basket.API.csproj | 1 + .../Basket/Basket.API/BasketSettings.cs | 2 + src/Services/Basket/Basket.API/Startup.cs | 53 +++++++++++++++---- .../Basket/Basket.API/appsettings.json | 4 +- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj index b3ba97b10..16130b599 100644 --- a/src/Services/Basket/Basket.API/Basket.API.csproj +++ b/src/Services/Basket/Basket.API/Basket.API.csproj @@ -41,6 +41,7 @@ + diff --git a/src/Services/Basket/Basket.API/BasketSettings.cs b/src/Services/Basket/Basket.API/BasketSettings.cs index 9d143545a..f42af2234 100644 --- a/src/Services/Basket/Basket.API/BasketSettings.cs +++ b/src/Services/Basket/Basket.API/BasketSettings.cs @@ -5,5 +5,7 @@ public string ConnectionString { get; set; } public string EventBusConnection { get; set; } + + public string ServiceBusConnection { get; set; } } } diff --git a/src/Services/Basket/Basket.API/Startup.cs b/src/Services/Basket/Basket.API/Startup.cs index 855312a65..4594a1dd1 100644 --- a/src/Services/Basket/Basket.API/Startup.cs +++ b/src/Services/Basket/Basket.API/Startup.cs @@ -21,6 +21,8 @@ using System.Linq; using System.Net; using System.Threading.Tasks; using System; +using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus; +using Microsoft.Azure.ServiceBus; namespace Microsoft.eShopOnContainers.Services.Basket.API { @@ -70,17 +72,33 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API }); - 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>(); + + var serviceBusConnection = new ServiceBusConnectionStringBuilder(settings.ServiceBusConnection); + + 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); + }); + } - return new DefaultRabbitMQPersistentConnection(factory, logger); - }); services.AddSwaggerGen(); @@ -113,7 +131,24 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API private void RegisterServiceBus(IServiceCollection services) { - services.AddSingleton(); + if (Configuration.GetValue("AzureServiceBus")) + { + services.AddSingleton(sp => + { + var serviceBusPersisterConnection = sp.GetRequiredService(); + var logger = sp.GetRequiredService>(); + var eventBusSubcriptionsManager = sp.GetRequiredService(); + var subscriptionClientName = "Basket"; + + return new EventBusServiceBus(serviceBusPersisterConnection, logger, + eventBusSubcriptionsManager, subscriptionClientName); + }); + } + else + { + services.AddSingleton(); + } + services.AddSingleton(); services.AddTransient(); diff --git a/src/Services/Basket/Basket.API/appsettings.json b/src/Services/Basket/Basket.API/appsettings.json index 31f76d0d0..f68afbe8f 100644 --- a/src/Services/Basket/Basket.API/appsettings.json +++ b/src/Services/Basket/Basket.API/appsettings.json @@ -8,5 +8,7 @@ } }, "IdentityUrl": "http://localhost:5105", - "ConnectionString": "127.0.0.1" + "ConnectionString": "127.0.0.1", + "ServiceBusConnection": "Endpoint=sb://eshoponazuretest.servicebus.windows.net/;SharedAccessKeyName=Root;SharedAccessKey=Xo9wlr4bRv5iqTTditgFhTeZqxIpczaAUqfspo+QE/s=;EntityPath=eshop_event_bus", + "AzureServiceBus": "true" }