eShopOnContainers/src/BuildingBlocks/EventBus/EventBusServiceBus/DefaultServiceBusPersisterConnection.cs
2023-04-28 11:57:57 -07:00

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();
}
}