Skip to content

Commit 7980c26

Browse files
committed
- Declare new ServiceBus instance with "AzureServiceBus" boolean condition
- Add ServiceBusConnection and AzureServiceBus variables in settings - Add EventBusServiceBus dependencies
1 parent fc06230 commit 7980c26

3 files changed

Lines changed: 51 additions & 10 deletions

File tree

src/Services/Ordering/Ordering.API/Ordering.API.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
<ItemGroup>
2626
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBusRabbitMQ\EventBusRabbitMQ.csproj" />
27+
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBusServiceBus\EventBusServiceBus.csproj" />
2728
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBus\EventBus.csproj" />
2829
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj" />
2930
<ProjectReference Include="..\..\..\BuildingBlocks\HealthChecks\src\Microsoft.AspNetCore.HealthChecks\Microsoft.AspNetCore.HealthChecks.csproj" />

src/Services/Ordering/Ordering.API/Startup.cs

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
using Infrastructure.Services;
1313
using Microsoft.AspNetCore.Builder;
1414
using Microsoft.AspNetCore.Hosting;
15+
using Microsoft.Azure.ServiceBus;
1516
using Microsoft.EntityFrameworkCore;
1617
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
1718
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
1819
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ;
20+
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus;
1921
using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF;
2022
using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Services;
2123
using Microsoft.Extensions.Configuration;
@@ -113,20 +115,33 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
113115
var serviceProvider = services.BuildServiceProvider();
114116
services.AddTransient<IOrderingIntegrationEventService, OrderingIntegrationEventService>();
115117

116-
services.AddSingleton<IRabbitMQPersistentConnection>(sp =>
118+
if (Configuration.GetValue<bool>("AzureServiceBus"))
117119
{
118-
var logger = sp.GetRequiredService<ILogger<DefaultRabbitMQPersistentConnection>>();
120+
services.AddSingleton<IServiceBusPersisterConnection>(sp =>
121+
{
122+
var logger = sp.GetRequiredService<ILogger<DefaultServiceBusPersisterConnection>>();
123+
124+
var serviceBusConnection = new ServiceBusConnectionStringBuilder(Configuration["ServiceBusConnection"]);
119125

120-
var factory = new ConnectionFactory()
126+
return new DefaultServiceBusPersisterConnection(serviceBusConnection, TimeSpan.FromSeconds(5), RetryPolicy.Default, logger);
127+
});
128+
}
129+
else
130+
{
131+
services.AddSingleton<IRabbitMQPersistentConnection>(sp =>
121132
{
122-
HostName = Configuration["EventBusConnection"]
123-
};
133+
var logger = sp.GetRequiredService<ILogger<DefaultRabbitMQPersistentConnection>>();
124134

125-
return new DefaultRabbitMQPersistentConnection(factory, logger);
126-
});
135+
var factory = new ConnectionFactory()
136+
{
137+
HostName = Configuration["EventBusConnection"]
138+
};
127139

128-
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
129-
services.AddSingleton<IEventBus, EventBusRabbitMQ>();
140+
return new DefaultRabbitMQPersistentConnection(factory, logger);
141+
});
142+
}
143+
144+
RegisterServiceBus(services);
130145

131146
services.AddOptions();
132147

@@ -174,5 +189,28 @@ protected virtual void ConfigureAuth(IApplicationBuilder app)
174189
RequireHttpsMetadata = false
175190
});
176191
}
192+
193+
private void RegisterServiceBus(IServiceCollection services)
194+
{
195+
if (Configuration.GetValue<bool>("AzureServiceBus"))
196+
{
197+
services.AddSingleton<IEventBus, EventBusServiceBus>(sp =>
198+
{
199+
var serviceBusPersisterConnection = sp.GetRequiredService<IServiceBusPersisterConnection>();
200+
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
201+
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
202+
var subscriptionClientName = "Ordering";
203+
204+
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
205+
eventBusSubcriptionsManager, subscriptionClientName);
206+
});
207+
}
208+
else
209+
{
210+
services.AddSingleton<IEventBus, EventBusRabbitMQ>();
211+
}
212+
213+
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
214+
}
177215
}
178216
}

src/Services/Ordering/Ordering.API/settings.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,7 @@
88
"System": "Information",
99
"Microsoft": "Information"
1010
}
11-
}
11+
},
12+
"ServiceBusConnection": "Endpoint=sb://eshoponazuretest.servicebus.windows.net/;SharedAccessKeyName=Root;SharedAccessKey=Xo9wlr4bRv5iqTTditgFhTeZqxIpczaAUqfspo+QE/s=;EntityPath=eshop_event_bus",
13+
"AzureServiceBus": "true"
1214
}

0 commit comments

Comments
 (0)