Skip to content

Commit d99f9d0

Browse files
#36 refactor for new Storage Queue client SDK
1 parent 5e78db2 commit d99f9d0

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

dotnet/ServerlessMicroservices.Shared/ServerlessMicroservices.Shared.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
</PropertyGroup>
66

77
<ItemGroup>
8+
<PackageReference Include="Azure.Storage.Queues" Version="12.8.0" />
89
<PackageReference Include="Dapper" Version="1.50.5" />
910
<PackageReference Include="IdentityModel" Version="3.9.0" />
1011
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.19.0" />

dotnet/ServerlessMicroservices.Shared/Services/StorageService.cs

+32-27
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using Microsoft.WindowsAzure.Storage;
2-
using Microsoft.WindowsAzure.Storage.Queue;
1+
using Azure.Core;
2+
using Azure.Storage.Queues;
33
using Newtonsoft.Json;
44
using ServerlessMicroservices.Models;
55
using 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

Comments
 (0)