1
- using Microsoft . WindowsAzure . Storage ;
2
- using Microsoft . WindowsAzure . Storage . Queue ;
1
+ using Azure . Core ;
2
+ using Azure . Storage . Queues ;
3
3
using Newtonsoft . Json ;
4
4
using ServerlessMicroservices . Models ;
5
5
using System ;
@@ -16,10 +16,10 @@ public class StorageService : IStorageService
16
16
private ISettingService _settingService ;
17
17
private ILoggerService _loggerService ;
18
18
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 ;
23
23
24
24
public StorageService ( ISettingService setting , ILoggerService logger )
25
25
{
@@ -33,8 +33,7 @@ public async Task Enqueue(TripItem trip)
33
33
34
34
if ( _tripManagersQueue != null )
35
35
{
36
- var queueMessage = new CloudQueueMessage ( JsonConvert . SerializeObject ( trip ) ) ;
37
- await _tripManagersQueue . AddMessageAsync ( queueMessage ) ;
36
+ await _tripManagersQueue . SendMessageAsync ( JsonConvert . SerializeObject ( trip ) ) ;
38
37
}
39
38
}
40
39
@@ -44,8 +43,7 @@ public async Task Enqueue(TripDemoState tripDemoState)
44
43
45
44
if ( _tripDemosQueue != null )
46
45
{
47
- var queueMessage = new CloudQueueMessage ( JsonConvert . SerializeObject ( tripDemoState ) ) ;
48
- await _tripDemosQueue . AddMessageAsync ( queueMessage ) ;
46
+ await _tripDemosQueue . SendMessageAsync ( JsonConvert . SerializeObject ( tripDemoState ) ) ;
49
47
}
50
48
}
51
49
@@ -55,66 +53,66 @@ public async Task Enqueue(string tripCode, string driverCode)
55
53
56
54
if ( _tripDriversQueue != null )
57
55
{
58
- var queueMessage = new CloudQueueMessage ( JsonConvert . SerializeObject ( new TripDriver
56
+ await _tripDriversQueue . SendMessageAsync ( JsonConvert . SerializeObject ( JsonConvert . SerializeObject ( new TripDriver
59
57
{
60
58
TripCode = tripCode ,
61
59
DriverCode = driverCode
62
- } ) ) ;
63
- await _tripDriversQueue . AddMessageAsync ( queueMessage ) ;
60
+ } ) ) ) ;
64
61
}
65
62
}
66
63
67
64
// PRIVATE//
68
65
69
66
private async Task InitializeStorage ( )
70
67
{
68
+ //TODO: #45 Not thread safe
71
69
if ( _isStorageInitialized )
72
70
return ;
73
71
74
72
var error = "" ;
75
73
76
74
try
77
75
{
76
+
77
+ //TODO: #45 Swallowing errors
78
78
if ( ! string . IsNullOrEmpty ( _settingService . GetStorageAccount ( ) ) )
79
79
{
80
80
// 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
+
85
88
86
89
var tripManagersQueueName = _settingService . GetTripManagersQueueName ( ) ;
87
90
if ( ! string . IsNullOrEmpty ( tripManagersQueueName ) )
88
- {
89
- _tripManagersQueue = queueClient . GetQueueReference ( tripManagersQueueName ) ;
90
- await _tripManagersQueue . CreateIfNotExistsAsync ( ) ;
91
- }
91
+ _tripManagersQueue = await InitializeQueueClient ( tripManagersQueueName , queueClientOptions ) ;
92
92
else
93
+ //TODO: #45 Swallowing errors
93
94
_loggerService . Log ( "tripManagersQueueName is empty" ) ;
94
95
95
96
var tripMonitorsQueueName = _settingService . GetTripMonitorsQueueName ( ) ;
96
97
if ( ! string . IsNullOrEmpty ( tripMonitorsQueueName ) )
97
98
{
98
- _tripMonitorsQueue = queueClient . GetQueueReference ( tripMonitorsQueueName ) ;
99
- await _tripMonitorsQueue . CreateIfNotExistsAsync ( ) ;
99
+ _tripMonitorsQueue = await InitializeQueueClient ( tripMonitorsQueueName , queueClientOptions ) ;
100
100
}
101
101
else
102
102
_loggerService . Log ( "tripMonitorsQueueName is empty" ) ;
103
103
104
104
var tripDemosQueueName = _settingService . GetTripDemosQueueName ( ) ;
105
105
if ( ! string . IsNullOrEmpty ( tripDemosQueueName ) )
106
106
{
107
- _tripDemosQueue = queueClient . GetQueueReference ( tripDemosQueueName ) ;
108
- await _tripDemosQueue . CreateIfNotExistsAsync ( ) ;
107
+ _tripDemosQueue = await InitializeQueueClient ( tripDemosQueueName , queueClientOptions ) ;
109
108
}
110
109
else
111
110
_loggerService . Log ( "tripDemosQueueName is empty" ) ;
112
111
113
112
var tripDriversQueueName = _settingService . GetTripDriversQueueName ( ) ;
114
113
if ( ! string . IsNullOrEmpty ( tripDriversQueueName ) )
115
114
{
116
- _tripDriversQueue = queueClient . GetQueueReference ( tripDriversQueueName ) ;
117
- await _tripDriversQueue . CreateIfNotExistsAsync ( ) ;
115
+ _tripDriversQueue = await InitializeQueueClient ( tripDriversQueueName , queueClientOptions ) ;
118
116
}
119
117
else
120
118
_loggerService . Log ( "tripDriversQueueName is empty" ) ;
@@ -132,5 +130,12 @@ private async Task InitializeStorage()
132
130
_loggerService . Log ( $ "{ LOG_TAG } - InitializeStorage - Error: { error } ") ;
133
131
}
134
132
}
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
+ }
135
140
}
136
141
}
0 commit comments