resolve the errors in service

This commit is contained in:
zedy 2021-07-23 10:08:37 +08:00
parent f11360bc3b
commit 0ae855d9e3
12 changed files with 2697 additions and 86 deletions

View File

@ -7,8 +7,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
public class DefaultServiceBusPersisterConnection : IServiceBusPersisterConnection public class DefaultServiceBusPersisterConnection : IServiceBusPersisterConnection
{ {
private readonly string _serviceBusConnectionString; private readonly string _serviceBusConnectionString;
private ServiceBusAdministrationClient _subscriptionClient;
private ServiceBusClient _topicClient; private ServiceBusClient _topicClient;
private ServiceBusAdministrationClient _subscriptionClient;
bool _disposed; bool _disposed;
@ -39,7 +39,6 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
} }
} }
public ServiceBusClient CreateModel() public ServiceBusClient CreateModel()
{ {
if (_topicClient.IsClosed) if (_topicClient.IsClosed)

View File

@ -6,7 +6,6 @@ using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System; using System;
using System.Text;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
@ -17,7 +16,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
private readonly ILogger<EventBusServiceBus> _logger; private readonly ILogger<EventBusServiceBus> _logger;
private readonly IEventBusSubscriptionsManager _subsManager; private readonly IEventBusSubscriptionsManager _subsManager;
private readonly ILifetimeScope _autofac; private readonly ILifetimeScope _autofac;
private readonly string _topicName; private readonly string _topicName = "eshop_event_bus";
private readonly string _subscriptionName; private readonly string _subscriptionName;
private ServiceBusSender _sender; private ServiceBusSender _sender;
private ServiceBusProcessor _processor; private ServiceBusProcessor _processor;
@ -25,20 +24,18 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
private const string INTEGRATION_EVENT_SUFFIX = "IntegrationEvent"; private const string INTEGRATION_EVENT_SUFFIX = "IntegrationEvent";
public EventBusServiceBus(IServiceBusPersisterConnection serviceBusPersisterConnection, public EventBusServiceBus(IServiceBusPersisterConnection serviceBusPersisterConnection,
ILogger<EventBusServiceBus> logger, IEventBusSubscriptionsManager subsManager, ILifetimeScope autofac, string topicName, string subscriptionName) ILogger<EventBusServiceBus> logger, IEventBusSubscriptionsManager subsManager, ILifetimeScope autofac, string subscriptionClientName)
{ {
_serviceBusPersisterConnection = serviceBusPersisterConnection; _serviceBusPersisterConnection = serviceBusPersisterConnection;
_logger = logger ?? throw new ArgumentNullException(nameof(logger)); _logger = logger ?? throw new ArgumentNullException(nameof(logger));
_subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager(); _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager();
_autofac = autofac; _autofac = autofac;
_topicName = topicName; _subscriptionName = subscriptionClientName;
_subscriptionName = subscriptionName;
_sender = _serviceBusPersisterConnection.TopicClient.CreateSender(_topicName); _sender = _serviceBusPersisterConnection.TopicClient.CreateSender(_topicName);
ServiceBusProcessorOptions options = new ServiceBusProcessorOptions { MaxConcurrentCalls = 10, AutoCompleteMessages = false }; ServiceBusProcessorOptions options = new ServiceBusProcessorOptions { MaxConcurrentCalls = 10, AutoCompleteMessages = false };
_processor = _serviceBusPersisterConnection.TopicClient.CreateProcessor(_topicName, options); _processor = _serviceBusPersisterConnection.TopicClient.CreateProcessor(_topicName, options);
RemoveDefaultRule(); RemoveDefaultRule();
RegisterSubscriptionClientMessageHandlerAsync().GetAwaiter().GetResult();
} }
public void Publish(IntegrationEvent @event) public void Publish(IntegrationEvent @event)
@ -125,12 +122,6 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
_subsManager.RemoveDynamicSubscription<TH>(eventName); _subsManager.RemoveDynamicSubscription<TH>(eventName);
} }
public void Dispose()
{
_subsManager.Clear();
_processor.CloseAsync().GetAwaiter().GetResult();
}
private async Task RegisterSubscriptionClientMessageHandlerAsync() private async Task RegisterSubscriptionClientMessageHandlerAsync()
{ {
_processor.ProcessMessageAsync += _processor.ProcessMessageAsync +=
@ -150,6 +141,12 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus
await _processor.StartProcessingAsync(); await _processor.StartProcessingAsync();
} }
public void Dispose()
{
_subsManager.Clear();
_processor.CloseAsync().GetAwaiter().GetResult();
}
private Task ErrorHandler(ProcessErrorEventArgs args) private Task ErrorHandler(ProcessErrorEventArgs args)
{ {
var ex = args.Exception; var ex = args.Exception;

View File

@ -7,7 +7,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Autofac" Version="6.1.0" /> <PackageReference Include="Autofac" Version="6.1.0" />
<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.1.2" /> <PackageReference Include="Azure.Messaging.ServiceBus" Version="7.2.1" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
</ItemGroup> </ItemGroup>

View File

@ -283,12 +283,10 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = Configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = Configuration["SubscriptionClientName"]; string subscriptionName = Configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, return new EventBusServiceBus(serviceBusPersisterConnection, logger,
eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }
else else

View File

@ -50,7 +50,6 @@
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" /> <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />
<PackageReference Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.2.1" /> <PackageReference Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.2.1" />
<PackageReference Include="Azure.Identity" Version="1.4.0" /> <PackageReference Include="Azure.Identity" Version="1.4.0" />
<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.2.0" />
<PackageReference Include="Google.Protobuf" Version="3.14.0" /> <PackageReference Include="Google.Protobuf" Version="3.14.0" />
<PackageReference Include="Grpc.AspNetCore.Server" Version="2.34.0" /> <PackageReference Include="Grpc.AspNetCore.Server" Version="2.34.0" />
<PackageReference Include="Grpc.Tools" Version="2.34.0" PrivateAssets="All" /> <PackageReference Include="Grpc.Tools" Version="2.34.0" PrivateAssets="All" />

View File

@ -332,12 +332,10 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = configuration["SubscriptionClientName"]; string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, return new EventBusServiceBus(serviceBusPersisterConnection, logger,
eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }

View File

@ -375,12 +375,10 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = configuration["SubscriptionClientName"]; string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, return new EventBusServiceBus(serviceBusPersisterConnection, logger,
eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }
else else

View File

@ -64,11 +64,9 @@ namespace Ordering.BackgroundTasks.Extensions
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = configuration["SubscriptionClientName"]; string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); return new EventBusServiceBus(serviceBusPersisterConnection, logger, eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }
else else

View File

@ -212,12 +212,10 @@ namespace Ordering.SignalrHub
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = Configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = Configuration["SubscriptionClientName"]; string subscriptionName = Configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, return new EventBusServiceBus(serviceBusPersisterConnection, logger,
eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }
else else

View File

@ -129,12 +129,10 @@ namespace Payment.API
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = Configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = Configuration["SubscriptionClientName"]; string subscriptionName = Configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, return new EventBusServiceBus(serviceBusPersisterConnection, logger,
eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }
else else

View File

@ -215,12 +215,10 @@ namespace Webhooks.API
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>(); var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>(); var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>(); var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
var serviceBusConnectionString = configuration["EventBusConnection"];
string topicName = ServiceBusConnectionStringProperties.Parse(serviceBusConnectionString).EntityPath;
string subscriptionName = configuration["SubscriptionClientName"]; string subscriptionName = configuration["SubscriptionClientName"];
return new EventBusServiceBus(serviceBusPersisterConnection, logger, return new EventBusServiceBus(serviceBusPersisterConnection, logger,
eventBusSubcriptionsManager, iLifetimeScope, topicName, subscriptionName); eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
}); });
} }

File diff suppressed because it is too large Load Diff