Skip to content
This repository was archived by the owner on Nov 17, 2023. It is now read-only.

Commit e9351bf

Browse files
committed
Catalog.API: Commit to migrate catalog api to webapplication builder
1 parent 0740fd4 commit e9351bf

File tree

12 files changed

+338
-454
lines changed

12 files changed

+338
-454
lines changed

src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ;
2+
using Microsoft.Extensions.DependencyInjection;
23

34
public class EventBusRabbitMQ : IEventBus, IDisposable
45
{
@@ -8,21 +9,21 @@ public class EventBusRabbitMQ : IEventBus, IDisposable
89
private readonly IRabbitMQPersistentConnection _persistentConnection;
910
private readonly ILogger<EventBusRabbitMQ> _logger;
1011
private readonly IEventBusSubscriptionsManager _subsManager;
11-
private readonly ILifetimeScope _autofac;
12+
private readonly IServiceProvider _serviceProvider;
1213
private readonly int _retryCount;
1314

1415
private IModel _consumerChannel;
1516
private string _queueName;
1617

1718
public EventBusRabbitMQ(IRabbitMQPersistentConnection persistentConnection, ILogger<EventBusRabbitMQ> logger,
18-
ILifetimeScope autofac, IEventBusSubscriptionsManager subsManager, string queueName = null, int retryCount = 5)
19+
IServiceProvider serviceProvider, IEventBusSubscriptionsManager subsManager, string queueName = null, int retryCount = 5)
1920
{
2021
_persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection));
2122
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
2223
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
2324
_queueName = queueName;
2425
_consumerChannel = CreateConsumerChannel();
25-
_autofac = autofac;
26+
_serviceProvider = serviceProvider;
2627
_retryCount = retryCount;
2728
_subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
2829
}
@@ -240,20 +241,20 @@ private async Task ProcessEvent(string eventName, string message)
240241

241242
if (_subsManager.HasSubscriptionsForEvent(eventName))
242243
{
243-
await using var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME);
244+
using var scope = _serviceProvider.CreateScope();
244245
var subscriptions = _subsManager.GetHandlersForEvent(eventName);
245246
foreach (var subscription in subscriptions)
246247
{
247248
if (subscription.IsDynamic)
248249
{
249-
if (scope.ResolveOptional(subscription.HandlerType) is not IDynamicIntegrationEventHandler handler) continue;
250+
if (scope.ServiceProvider.GetService(subscription.HandlerType) is not IDynamicIntegrationEventHandler handler) continue;
250251
using dynamic eventData = JsonDocument.Parse(message);
251252
await Task.Yield();
252253
await handler.Handle(eventData);
253254
}
254255
else
255256
{
256-
var handler = scope.ResolveOptional(subscription.HandlerType);
257+
var handler = scope.ServiceProvider.GetService(subscription.HandlerType);
257258
if (handler == null) continue;
258259
var eventType = _subsManager.GetEventTypeByName(eventName);
259260
var integrationEvent = JsonSerializer.Deserialize(message, eventType, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });

src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
13
namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus;
24

35
public class EventBusServiceBus : IEventBus, IAsyncDisposable
46
{
57
private readonly IServiceBusPersisterConnection _serviceBusPersisterConnection;
68
private readonly ILogger<EventBusServiceBus> _logger;
79
private readonly IEventBusSubscriptionsManager _subsManager;
8-
private readonly ILifetimeScope _autofac;
10+
private readonly IServiceProvider _serviceProvider;
911
private readonly string _topicName = "eshop_event_bus";
1012
private readonly string _subscriptionName;
1113
private readonly ServiceBusSender _sender;
@@ -14,12 +16,12 @@ public class EventBusServiceBus : IEventBus, IAsyncDisposable
1416
private const string INTEGRATION_EVENT_SUFFIX = "IntegrationEvent";
1517

1618
public EventBusServiceBus(IServiceBusPersisterConnection serviceBusPersisterConnection,
17-
ILogger<EventBusServiceBus> logger, IEventBusSubscriptionsManager subsManager, ILifetimeScope autofac, string subscriptionClientName)
19+
ILogger<EventBusServiceBus> logger, IEventBusSubscriptionsManager subsManager, IServiceProvider serviceProvider, string subscriptionClientName)
1820
{
1921
_serviceBusPersisterConnection = serviceBusPersisterConnection;
2022
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
2123
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
22-
_autofac = autofac;
24+
_serviceProvider = serviceProvider;
2325
_subscriptionName = subscriptionClientName;
2426
_sender = _serviceBusPersisterConnection.TopicClient.CreateSender(_topicName);
2527
ServiceBusProcessorOptions options = new ServiceBusProcessorOptions { MaxConcurrentCalls = 10, AutoCompleteMessages = false };
@@ -149,20 +151,20 @@ private async Task<bool> ProcessEvent(string eventName, string message)
149151
var processed = false;
150152
if (_subsManager.HasSubscriptionsForEvent(eventName))
151153
{
152-
var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME);
154+
var scope = _serviceProvider.CreateScope();
153155
var subscriptions = _subsManager.GetHandlersForEvent(eventName);
154156
foreach (var subscription in subscriptions)
155157
{
156158
if (subscription.IsDynamic)
157159
{
158-
if (scope.ResolveOptional(subscription.HandlerType) is not IDynamicIntegrationEventHandler handler) continue;
160+
if (scope.ServiceProvider.GetService(subscription.HandlerType) is not IDynamicIntegrationEventHandler handler) continue;
159161

160162
using dynamic eventData = JsonDocument.Parse(message);
161163
await handler.Handle(eventData);
162164
}
163165
else
164166
{
165-
var handler = scope.ResolveOptional(subscription.HandlerType);
167+
var handler = scope.ServiceProvider.GetService(subscription.HandlerType);
166168
if (handler == null) continue;
167169
var eventType = _subsManager.GetEventTypeByName(eventName);
168170
var integrationEvent = JsonSerializer.Deserialize(message, eventType);

src/Services/Basket/Basket.API/Startup.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,13 +244,12 @@ private void RegisterEventBus(IServiceCollection services)
244244
services.AddSingleton<IEventBus, EventBusServiceBus>(sp =>
245245
{
246246
var serviceBusPersisterConnection = sp.GetRequiredService<IServiceBusPersisterConnection>();
247-
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
248247
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
249248
var eventBusSubscriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
250249
string subscriptionName = Configuration["SubscriptionClientName"];
251250

252251
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
253-
eventBusSubscriptionsManager, iLifetimeScope, subscriptionName);
252+
eventBusSubscriptionsManager, sp, subscriptionName);
254253
});
255254
}
256255
else
@@ -259,7 +258,6 @@ private void RegisterEventBus(IServiceCollection services)
259258
{
260259
var subscriptionClientName = Configuration["SubscriptionClientName"];
261260
var rabbitMQPersistentConnection = sp.GetRequiredService<IRabbitMQPersistentConnection>();
262-
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
263261
var logger = sp.GetRequiredService<ILogger<EventBusRabbitMQ>>();
264262
var eventBusSubscriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
265263

@@ -269,7 +267,7 @@ private void RegisterEventBus(IServiceCollection services)
269267
retryCount = int.Parse(Configuration["EventBusRetryCount"]);
270268
}
271269

272-
return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubscriptionsManager, subscriptionClientName, retryCount);
270+
return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, sp, eventBusSubscriptionsManager, subscriptionClientName, retryCount);
273271
});
274272
}
275273

src/Services/Catalog/Catalog.API/GlobalUsings.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,5 @@
5959
global using Microsoft.Extensions.Diagnostics.HealthChecks;
6060
global using Microsoft.OpenApi.Models;
6161
global using RabbitMQ.Client;
62-
global using System.Reflection;
62+
global using System.Reflection;
63+
global using Microsoft.Extensions.FileProviders;

0 commit comments

Comments
 (0)