51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus;
|
|
|
|
public class DefaultServiceBusPersisterConnection : IServiceBusPersisterConnection
|
|
{
|
|
private readonly string _serviceBusConnectionString;
|
|
private ServiceBusClient _topicClient;
|
|
private ServiceBusAdministrationClient _subscriptionClient;
|
|
|
|
bool _disposed;
|
|
|
|
public DefaultServiceBusPersisterConnection(string serviceBusConnectionString)
|
|
{
|
|
_serviceBusConnectionString = serviceBusConnectionString;
|
|
_subscriptionClient = new ServiceBusAdministrationClient(_serviceBusConnectionString);
|
|
_topicClient = new ServiceBusClient(_serviceBusConnectionString);
|
|
}
|
|
|
|
public ServiceBusClient TopicClient
|
|
{
|
|
get
|
|
{
|
|
if (_topicClient.IsClosed)
|
|
{
|
|
_topicClient = new ServiceBusClient(_serviceBusConnectionString);
|
|
}
|
|
return _topicClient;
|
|
}
|
|
}
|
|
|
|
public ServiceBusAdministrationClient AdministrationClient =>
|
|
_subscriptionClient;
|
|
|
|
public ServiceBusClient CreateModel()
|
|
{
|
|
if (_topicClient.IsClosed)
|
|
{
|
|
_topicClient = new ServiceBusClient(_serviceBusConnectionString);
|
|
}
|
|
|
|
return _topicClient;
|
|
}
|
|
|
|
public async ValueTask DisposeAsync()
|
|
{
|
|
if (_disposed) return;
|
|
|
|
_disposed = true;
|
|
await _topicClient.DisposeAsync();
|
|
}
|
|
}
|