1- using Microsoft . WindowsAzure . Storage ;
2- using Microsoft . WindowsAzure . Storage . Queue ;
1+ using Azure . Core ;
2+ using Azure . Storage . Queues ;
33using Newtonsoft . Json ;
44using ServerlessMicroservices . Models ;
55using System ;
@@ -16,10 +16,10 @@ public class StorageService : IStorageService
1616 private ISettingService _settingService ;
1717 private ILoggerService _loggerService ;
1818
19- private CloudQueue _tripManagersQueue ;
20- private CloudQueue _tripMonitorsQueue ;
21- private CloudQueue _tripDemosQueue ;
22- private CloudQueue _tripDriversQueue ;
19+ private QueueClient _tripManagersQueue ;
20+ private QueueClient _tripMonitorsQueue ;
21+ private QueueClient _tripDemosQueue ;
22+ private QueueClient _tripDriversQueue ;
2323
2424 public StorageService ( ISettingService setting , ILoggerService logger )
2525 {
@@ -33,8 +33,7 @@ public async Task Enqueue(TripItem trip)
3333
3434 if ( _tripManagersQueue != null )
3535 {
36- var queueMessage = new CloudQueueMessage ( JsonConvert . SerializeObject ( trip ) ) ;
37- await _tripManagersQueue . AddMessageAsync ( queueMessage ) ;
36+ await _tripManagersQueue . SendMessageAsync ( JsonConvert . SerializeObject ( trip ) ) ;
3837 }
3938 }
4039
@@ -44,8 +43,7 @@ public async Task Enqueue(TripDemoState tripDemoState)
4443
4544 if ( _tripDemosQueue != null )
4645 {
47- var queueMessage = new CloudQueueMessage ( JsonConvert . SerializeObject ( tripDemoState ) ) ;
48- await _tripDemosQueue . AddMessageAsync ( queueMessage ) ;
46+ await _tripDemosQueue . SendMessageAsync ( JsonConvert . SerializeObject ( tripDemoState ) ) ;
4947 }
5048 }
5149
@@ -55,66 +53,66 @@ public async Task Enqueue(string tripCode, string driverCode)
5553
5654 if ( _tripDriversQueue != null )
5755 {
58- var queueMessage = new CloudQueueMessage ( JsonConvert . SerializeObject ( new TripDriver
56+ await _tripDriversQueue . SendMessageAsync ( JsonConvert . SerializeObject ( JsonConvert . SerializeObject ( new TripDriver
5957 {
6058 TripCode = tripCode ,
6159 DriverCode = driverCode
62- } ) ) ;
63- await _tripDriversQueue . AddMessageAsync ( queueMessage ) ;
60+ } ) ) ) ;
6461 }
6562 }
6663
6764 // PRIVATE//
6865
6966 private async Task InitializeStorage ( )
7067 {
68+ //TODO: #45 Not thread safe
7169 if ( _isStorageInitialized )
7270 return ;
7371
7472 var error = "" ;
7573
7674 try
7775 {
76+
77+ //TODO: #45 Swallowing errors
7878 if ( ! string . IsNullOrEmpty ( _settingService . GetStorageAccount ( ) ) )
7979 {
8080 // Queues Initialization
81- var queueStorageAccount = CloudStorageAccount . Parse ( _settingService . GetStorageAccount ( ) ) ;
82- // Get context object for working with queues, and set a default retry policy appropriate for a web user interface.
83- var queueClient = queueStorageAccount . CreateCloudQueueClient ( ) ;
84- //queueClient.DefaultRequestOptions.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3);
81+
82+ // Retry policy appropriate for a web user interface.
83+ var queueClientOptions = new QueueClientOptions ( ) ;
84+ queueClientOptions . Retry . Mode = RetryMode . Fixed ;
85+ queueClientOptions . Retry . Delay = TimeSpan . FromSeconds ( 3 ) ;
86+ queueClientOptions . Retry . MaxRetries = 3 ;
87+
8588
8689 var tripManagersQueueName = _settingService . GetTripManagersQueueName ( ) ;
8790 if ( ! string . IsNullOrEmpty ( tripManagersQueueName ) )
88- {
89- _tripManagersQueue = queueClient . GetQueueReference ( tripManagersQueueName ) ;
90- await _tripManagersQueue . CreateIfNotExistsAsync ( ) ;
91- }
91+ _tripManagersQueue = await InitializeQueueClient ( tripManagersQueueName , queueClientOptions ) ;
9292 else
93+ //TODO: #45 Swallowing errors
9394 _loggerService . Log ( "tripManagersQueueName is empty" ) ;
9495
9596 var tripMonitorsQueueName = _settingService . GetTripMonitorsQueueName ( ) ;
9697 if ( ! string . IsNullOrEmpty ( tripMonitorsQueueName ) )
9798 {
98- _tripMonitorsQueue = queueClient . GetQueueReference ( tripMonitorsQueueName ) ;
99- await _tripMonitorsQueue . CreateIfNotExistsAsync ( ) ;
99+ _tripMonitorsQueue = await InitializeQueueClient ( tripMonitorsQueueName , queueClientOptions ) ;
100100 }
101101 else
102102 _loggerService . Log ( "tripMonitorsQueueName is empty" ) ;
103103
104104 var tripDemosQueueName = _settingService . GetTripDemosQueueName ( ) ;
105105 if ( ! string . IsNullOrEmpty ( tripDemosQueueName ) )
106106 {
107- _tripDemosQueue = queueClient . GetQueueReference ( tripDemosQueueName ) ;
108- await _tripDemosQueue . CreateIfNotExistsAsync ( ) ;
107+ _tripDemosQueue = await InitializeQueueClient ( tripDemosQueueName , queueClientOptions ) ;
109108 }
110109 else
111110 _loggerService . Log ( "tripDemosQueueName is empty" ) ;
112111
113112 var tripDriversQueueName = _settingService . GetTripDriversQueueName ( ) ;
114113 if ( ! string . IsNullOrEmpty ( tripDriversQueueName ) )
115114 {
116- _tripDriversQueue = queueClient . GetQueueReference ( tripDriversQueueName ) ;
117- await _tripDriversQueue . CreateIfNotExistsAsync ( ) ;
115+ _tripDriversQueue = await InitializeQueueClient ( tripDriversQueueName , queueClientOptions ) ;
118116 }
119117 else
120118 _loggerService . Log ( "tripDriversQueueName is empty" ) ;
@@ -132,5 +130,12 @@ private async Task InitializeStorage()
132130 _loggerService . Log ( $ "{ LOG_TAG } - InitializeStorage - Error: { error } ") ;
133131 }
134132 }
133+
134+ private async Task < QueueClient > InitializeQueueClient ( string queueName , QueueClientOptions options )
135+ {
136+ var queueClient = new QueueClient ( _settingService . GetStorageAccount ( ) , queueName , options ) ;
137+ await queueClient . CreateIfNotExistsAsync ( ) ;
138+ return queueClient ;
139+ }
135140 }
136141}
0 commit comments