Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit c609736

Browse files
committed
configuration of queue clients and extract function
1 parent 9317192 commit c609736

File tree

8 files changed

+53
-10
lines changed

8 files changed

+53
-10
lines changed

src/ServiceLayer.Mesh/Configuration/AppConfiguration.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
namespace ServiceLayer.Mesh.Configuration;
22

3-
public class AppConfiguration : IFileDiscoveryFunctionConfiguration
3+
public class AppConfiguration :
4+
IFileDiscoveryFunctionConfiguration,
5+
IFileExtractFunctionConfiguration,
6+
IFileExtractQueueClientConfiguration,
7+
IFileTransformQueueClientConfiguration
48
{
59
public string NbssMeshMailboxId => GetRequired("NbssMailboxId");
610

11+
public string FileExtractQueueName => GetRequired("FileExtractQueueName");
12+
13+
public string FileTransformQueueName => GetRequired("FileTransformQueueName");
14+
715
private static string GetRequired(string key)
816
{
917
var value = Environment.GetEnvironmentVariable(key);
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace ServiceLayer.Mesh.Configuration;
2+
3+
public interface IFileExtractFunctionConfiguration
4+
{
5+
string NbssMeshMailboxId { get; }
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace ServiceLayer.Mesh.Configuration;
2+
3+
public interface IFileExtractQueueClientConfiguration
4+
{
5+
string FileExtractQueueName { get; }
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace ServiceLayer.Mesh.Configuration;
2+
3+
public interface IFileTransformQueueClientConfiguration
4+
{
5+
string FileTransformQueueName { get; }
6+
}

src/ServiceLayer.Mesh/Messaging/FileExtractQueueClient.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
using Azure.Storage.Queues;
22
using Microsoft.Extensions.Logging;
3+
using ServiceLayer.Mesh.Configuration;
34
using ServiceLayer.Mesh.Models;
45

56
namespace ServiceLayer.Mesh.Messaging;
67

7-
public class FileExtractQueueClient(ILogger<FileExtractQueueClient> logger, QueueServiceClient queueServiceClient)
8-
: QueueClientBase(logger, queueServiceClient, "file-extract"), IFileExtractQueueClient
8+
public class FileExtractQueueClient(
9+
ILogger<FileExtractQueueClient> logger,
10+
IFileExtractQueueClientConfiguration configuration,
11+
QueueServiceClient queueServiceClient)
12+
: QueueClientBase(logger, queueServiceClient), IFileExtractQueueClient
913
{
1014
public async Task EnqueueFileExtractAsync(MeshFile file)
1115
{
@@ -16,4 +20,6 @@ public async Task SendToPoisonQueueAsync(FileExtractQueueMessage message)
1620
{
1721
await base.SendToPoisonQueueAsync(message);
1822
}
23+
24+
protected override string QueueName => configuration.FileExtractQueueName;
1925
}

src/ServiceLayer.Mesh/Messaging/FileTransformQueueClient.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
using Azure.Storage.Queues;
22
using Microsoft.Extensions.Logging;
3+
using ServiceLayer.Mesh.Configuration;
34
using ServiceLayer.Mesh.Models;
45

56
namespace ServiceLayer.Mesh.Messaging;
67

7-
public class FileTransformQueueClient(ILogger<FileTransformQueueClient> logger, QueueServiceClient queueServiceClient)
8-
: QueueClientBase(logger, queueServiceClient, "file-transform"), IFileTransformQueueClient
8+
public class FileTransformQueueClient(
9+
ILogger<FileTransformQueueClient> logger,
10+
IFileTransformQueueClientConfiguration configuration,
11+
QueueServiceClient queueServiceClient)
12+
: QueueClientBase(logger, queueServiceClient), IFileTransformQueueClient
913
{
1014
public async Task EnqueueFileTransformAsync(MeshFile file)
1115
{
@@ -16,4 +20,6 @@ public async Task SendToPoisonQueueAsync(FileTransformQueueMessage message)
1620
{
1721
await base.SendToPoisonQueueAsync(message);
1822
}
23+
24+
protected override string QueueName => configuration.FileTransformQueueName;
1925
}

src/ServiceLayer.Mesh/Messaging/QueueClientBase.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44

55
namespace ServiceLayer.Mesh.Messaging;
66

7-
public abstract class QueueClientBase(ILogger logger, QueueServiceClient queueServiceClient, string queueName)
7+
public abstract class QueueClientBase(ILogger logger, QueueServiceClient queueServiceClient)
88
{
99
private QueueClient? _queueClient;
1010
private QueueClient? _poisonQueueClient;
1111

1212
private QueueClient Client => _queueClient ??= CreateClient();
1313
private QueueClient PoisonClient => _poisonQueueClient ??= CreatePoisonClient();
1414

15+
protected abstract string QueueName { get; }
16+
1517
private static readonly JsonSerializerOptions QueueJsonOptions = new()
1618
{
1719
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
@@ -20,14 +22,14 @@ public abstract class QueueClientBase(ILogger logger, QueueServiceClient queueSe
2022

2123
private QueueClient CreateClient()
2224
{
23-
var client = queueServiceClient.GetQueueClient(queueName);
25+
var client = queueServiceClient.GetQueueClient(QueueName);
2426
client.CreateIfNotExists(); // TODO - consider environment gating this
2527
return client;
2628
}
2729

2830
private QueueClient CreatePoisonClient()
2931
{
30-
var poisonQueueName = $"{queueName}-poison";
32+
var poisonQueueName = $"{QueueName}-poison";
3133
var client = queueServiceClient.GetQueueClient(poisonQueueName);
3234
client.CreateIfNotExists(); // TODO - consider environment gating this
3335
return client;
@@ -43,7 +45,7 @@ protected async Task SendJsonMessageAsync<T>(T message)
4345
catch (Exception e)
4446
{
4547
// TODO - consider including file ID or correlation ID in error logs
46-
logger.LogError(e, "Error sending message to queue {QueueName}", queueName);
48+
logger.LogError(e, "Error sending message to queue {QueueName}", QueueName);
4749
throw;
4850
}
4951
}
@@ -57,7 +59,7 @@ protected async Task SendToPoisonQueueAsync<T>(T message)
5759
}
5860
catch (Exception e)
5961
{
60-
logger.LogError(e, "Error sending message to poison queue {PoisonQueueName}", $"{queueName}-poison");
62+
logger.LogError(e, "Error sending message to poison queue {PoisonQueueName}", $"{QueueName}-poison");
6163
throw;
6264
}
6365
}

src/ServiceLayer.Mesh/Program.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@
6060
});
6161

6262
services.AddTransient<IFileDiscoveryFunctionConfiguration, AppConfiguration>();
63+
services.AddTransient<IFileExtractFunctionConfiguration, AppConfiguration>();
64+
services.AddTransient<IFileExtractQueueClientConfiguration, AppConfiguration>();
65+
services.AddTransient<IFileTransformQueueClientConfiguration, AppConfiguration>();
6366
});
6467

6568

0 commit comments

Comments
 (0)