@@ -21,49 +21,44 @@ namespace FetchTranscription
2121 using Connector . Serializable . TranscriptionStartedServiceBusMessage ;
2222
2323 using Microsoft . EntityFrameworkCore ;
24- using Microsoft . Extensions . DependencyInjection ;
24+ using Microsoft . Extensions . Azure ;
2525 using Microsoft . Extensions . Logging ;
2626 using Newtonsoft . Json ;
2727
2828 public class TranscriptionProcessor
2929 {
30- private static readonly ServiceBusClient StartServiceBusClient = new ServiceBusClient ( FetchTranscriptionEnvironmentVariables . StartTranscriptionServiceBusConnectionString ) ;
30+ private readonly ServiceBusSender startTranscriptionServiceBusSender ;
3131
32- private static readonly ServiceBusSender StartServiceBusSender = StartServiceBusClient . CreateSender ( ServiceBusConnectionStringProperties . Parse ( FetchTranscriptionEnvironmentVariables . StartTranscriptionServiceBusConnectionString ) . EntityPath ) ;
32+ private readonly ServiceBusSender fetchTranscriptionServiceBusSender ;
3333
34- private static readonly ServiceBusClient FetchServiceBusClient = new ServiceBusClient ( FetchTranscriptionEnvironmentVariables . FetchTranscriptionServiceBusConnectionString ) ;
35-
36- private static readonly ServiceBusSender FetchServiceBusSender = FetchServiceBusClient . CreateSender ( ServiceBusConnectionStringProperties . Parse ( FetchTranscriptionEnvironmentVariables . FetchTranscriptionServiceBusConnectionString ) . EntityPath ) ;
37-
38- private static readonly ServiceBusClient CompletedServiceBusClient ;
39-
40- private static readonly ServiceBusSender CompletedServiceBusSender ;
41-
42- private readonly IServiceProvider serviceProvider ;
34+ private readonly ServiceBusSender completedTranscriptionServiceBusSender ;
4335
4436 private readonly IngestionClientDbContext databaseContext ;
4537
4638 private readonly IStorageConnector storageConnector ;
4739
48- #pragma warning disable CA1810
49- static TranscriptionProcessor ( )
40+ public TranscriptionProcessor (
41+ IStorageConnector storageConnector ,
42+ IAzureClientFactory < ServiceBusClient > serviceBusClientFactory ,
43+ IngestionClientDbContext databaseContext )
5044 {
51- if ( ! string . IsNullOrEmpty ( FetchTranscriptionEnvironmentVariables . CompletedServiceBusConnectionString ) )
52- {
53- CompletedServiceBusClient = new ServiceBusClient ( FetchTranscriptionEnvironmentVariables . CompletedServiceBusConnectionString ) ;
54- CompletedServiceBusSender = CompletedServiceBusClient . CreateSender ( ServiceBusConnectionStringProperties . Parse ( FetchTranscriptionEnvironmentVariables . CompletedServiceBusConnectionString ) . EntityPath ) ;
55- }
56- }
57- #pragma warning restore CA1810
58-
59- public TranscriptionProcessor ( IServiceProvider serviceProvider , IStorageConnector storageConnector )
60- {
61- this . serviceProvider = serviceProvider ;
6245 this . storageConnector = storageConnector ;
46+ this . databaseContext = databaseContext ;
47+
48+ ArgumentNullException . ThrowIfNull ( serviceBusClientFactory , nameof ( serviceBusClientFactory ) ) ;
49+ var startTranscriptionServiceBusClient = serviceBusClientFactory . CreateClient ( ServiceBusClientName . StartTranscriptionServiceBusClient . ToString ( ) ) ;
50+ var startTranscriptionQueueName = ServiceBusConnectionStringProperties . Parse ( FetchTranscriptionEnvironmentVariables . StartTranscriptionServiceBusConnectionString ) . EntityPath ;
51+ this . startTranscriptionServiceBusSender = startTranscriptionServiceBusClient . CreateSender ( startTranscriptionQueueName ) ;
52+
53+ var fetchTranscriptionServiceBusClient = serviceBusClientFactory . CreateClient ( ServiceBusClientName . FetchTranscriptionServiceBusClient . ToString ( ) ) ;
54+ var fetchTranscriptionQueueName = ServiceBusConnectionStringProperties . Parse ( FetchTranscriptionEnvironmentVariables . FetchTranscriptionServiceBusConnectionString ) . EntityPath ;
55+ this . fetchTranscriptionServiceBusSender = fetchTranscriptionServiceBusClient . CreateSender ( fetchTranscriptionQueueName ) ;
6356
64- if ( FetchTranscriptionEnvironmentVariables . UseSqlDatabase )
57+ if ( ! string . IsNullOrWhiteSpace ( FetchTranscriptionEnvironmentVariables . CompletedServiceBusConnectionString ) )
6558 {
66- this . databaseContext = this . serviceProvider . GetRequiredService < IngestionClientDbContext > ( ) ;
59+ var completedTranscriptionServiceBusClient = serviceBusClientFactory . CreateClient ( ServiceBusClientName . CompletedTranscriptionServiceBusClient . ToString ( ) ) ;
60+ var completedTranscriptionQueueName = ServiceBusConnectionStringProperties . Parse ( FetchTranscriptionEnvironmentVariables . CompletedServiceBusConnectionString ) . EntityPath ;
61+ this . completedTranscriptionServiceBusSender = completedTranscriptionServiceBusClient . CreateSender ( completedTranscriptionQueueName ) ;
6762 }
6863 }
6964
@@ -97,11 +92,11 @@ public async Task ProcessTranscriptionJobAsync(TranscriptionStartedMessage servi
9792 break ;
9893 case "Running" :
9994 log . LogInformation ( $ "Transcription running, polling again after { messageDelayTime . TotalMinutes } minutes.") ;
100- await ServiceBusUtilities . SendServiceBusMessageAsync ( FetchServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , messageDelayTime ) . ConfigureAwait ( false ) ;
95+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . fetchTranscriptionServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , messageDelayTime ) . ConfigureAwait ( false ) ;
10196 break ;
10297 case "NotStarted" :
10398 log . LogInformation ( $ "Transcription not started, polling again after { messageDelayTime . TotalMinutes } minutes.") ;
104- await ServiceBusUtilities . SendServiceBusMessageAsync ( FetchServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , messageDelayTime ) . ConfigureAwait ( false ) ;
99+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . fetchTranscriptionServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , messageDelayTime ) . ConfigureAwait ( false ) ;
105100 break ;
106101 }
107102 }
@@ -221,7 +216,7 @@ private async Task ProcessFailedTranscriptionAsync(string transcriptionLocation,
221216 } ;
222217
223218 var audioFileMessage = new Azure . Messaging . ServiceBus . ServiceBusMessage ( JsonConvert . SerializeObject ( serviceBusMessage ) ) ;
224- await ServiceBusUtilities . SendServiceBusMessageAsync ( StartServiceBusSender , audioFileMessage , log , TimeSpan . FromMinutes ( 1 ) ) . ConfigureAwait ( false ) ;
219+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . startTranscriptionServiceBusSender , audioFileMessage , log , TimeSpan . FromMinutes ( 1 ) ) . ConfigureAwait ( false ) ;
225220 }
226221 else
227222 {
@@ -284,7 +279,7 @@ private async Task RetryOrFailJobAsync(TranscriptionStartedMessage message, stri
284279 if ( message . FailedExecutionCounter <= FetchTranscriptionEnvironmentVariables . RetryLimit || isThrottled )
285280 {
286281 log . LogInformation ( "Retrying.." ) ;
287- await ServiceBusUtilities . SendServiceBusMessageAsync ( FetchServiceBusSender , message . CreateMessageString ( ) , log , messageDelayTime ) . ConfigureAwait ( false ) ;
282+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . fetchTranscriptionServiceBusSender , message . CreateMessageString ( ) , log , messageDelayTime ) . ConfigureAwait ( false ) ;
288283 }
289284 else
290285 {
@@ -342,7 +337,7 @@ private async Task ProcessSucceededTranscriptionAsync(string transcriptionLocati
342337 {
343338 // If transcription analytics request is still running, re-queue message and get status again after X minutes:
344339 log . LogInformation ( $ "Transcription analytics requests still running for job { jobName } - re-queueing message.") ;
345- await ServiceBusUtilities . SendServiceBusMessageAsync ( FetchServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , GetMessageDelayTime ( serviceBusMessage . PollingCounter ) ) . ConfigureAwait ( false ) ;
340+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . fetchTranscriptionServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , GetMessageDelayTime ( serviceBusMessage . PollingCounter ) ) . ConfigureAwait ( false ) ;
346341 return ;
347342 }
348343
@@ -418,7 +413,7 @@ private async Task ProcessSucceededTranscriptionAsync(string transcriptionLocati
418413 log . LogInformation ( $ "Added text analytics requests to service bus message - re-queueing message.") ;
419414
420415 // Poll for first time with TA request after 1 minute
421- await ServiceBusUtilities . SendServiceBusMessageAsync ( FetchServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , TimeSpan . FromMinutes ( 1 ) ) . ConfigureAwait ( false ) ;
416+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . fetchTranscriptionServiceBusSender , serviceBusMessage . CreateMessageString ( ) , log , TimeSpan . FromMinutes ( 1 ) ) . ConfigureAwait ( false ) ;
422417 return ;
423418 }
424419
@@ -509,9 +504,9 @@ await this.databaseContext.StoreTranscriptionAsync(
509504 }
510505 }
511506
512- if ( ! string . IsNullOrEmpty ( FetchTranscriptionEnvironmentVariables . CompletedServiceBusConnectionString ) )
507+ if ( this . completedTranscriptionServiceBusSender != null )
513508 {
514- await ServiceBusUtilities . SendServiceBusMessageAsync ( CompletedServiceBusSender , JsonConvert . SerializeObject ( completedMessages ) , log , GetMessageDelayTime ( serviceBusMessage . PollingCounter ) ) . ConfigureAwait ( false ) ;
509+ await ServiceBusUtilities . SendServiceBusMessageAsync ( this . completedTranscriptionServiceBusSender , JsonConvert . SerializeObject ( completedMessages ) , log , GetMessageDelayTime ( serviceBusMessage . PollingCounter ) ) . ConfigureAwait ( false ) ;
515510 }
516511
517512 var generalErrors = generalErrorsStringBuilder . ToString ( ) ;
0 commit comments