Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.

Commit e4d84a7

Browse files
author
David R. Williamson
authored
Merge pull request #138 from Azure-Samples/drwill/messageRetryDispose
Fix error with Message body being re-read, and loop termination
2 parents ed5a3c4 + 95f67f5 commit e4d84a7

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

iot-hub/Samples/device/DeviceReconnectionSample/DeviceReconnectionSample.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,15 +194,15 @@ private async Task SendMessagesAsync(CancellationToken cancellationToken)
194194
{
195195
_logger.LogInformation($"Device sending message {++messageCount} to IoT Hub...");
196196

197-
Message message = PrepareMessage(messageCount);
197+
(Message message, string payload) = PrepareMessage(messageCount);
198198
while (true)
199199
{
200200
try
201201
{
202202
await s_deviceClient.SendEventAsync(message);
203-
_logger.LogInformation($"Sent message {messageCount} with data [{message.GetBytes()}]");
203+
_logger.LogInformation($"Sent message {messageCount} of {payload}");
204204
message.Dispose();
205-
continue;
205+
break;
206206
}
207207
catch (IotHubException ex) when (ex.IsTransient)
208208
{
@@ -213,6 +213,10 @@ private async Task SendMessagesAsync(CancellationToken cancellationToken)
213213
{
214214
_logger.LogError($"A network related exception was caught, but will try to recover and retry: {ex}");
215215
}
216+
catch (Exception ex)
217+
{
218+
_logger.LogError($"Unexpected error {ex}");
219+
}
216220

217221
// wait and retry
218222
await Task.Delay(s_sleepDuration);
@@ -256,7 +260,7 @@ private async Task ReceiveMessagesAsync(CancellationToken cancellationToken)
256260
}
257261
}
258262

259-
private Message PrepareMessage(int messageId)
263+
private (Message, string) PrepareMessage(int messageId)
260264
{
261265
var temperature = s_randomGenerator.Next(20, 35);
262266
var humidity = s_randomGenerator.Next(60, 80);
@@ -270,7 +274,7 @@ private Message PrepareMessage(int messageId)
270274
};
271275
eventMessage.Properties.Add("temperatureAlert", (temperature > TemperatureThreshold) ? "true" : "false");
272276

273-
return eventMessage;
277+
return (eventMessage, messagePayload);
274278
}
275279

276280
private async Task ReceiveMessageAndCompleteAsync()

0 commit comments

Comments
 (0)