private SensorDto Deserialize(EventDataWrapper eventDataWrapper) { try { return(JsonConvert.DeserializeObject <SensorDto>(eventDataWrapper.Body)); } catch (JsonException) { _poisonMessageRepository.Save(eventDataWrapper).Wait(); return(null); } }
public async Task Save(EventDataWrapper eventDataWrapper) { try { var policies = _policyRegistry.CreateAsyncPolicies(); await Polly.Policy.WrapAsync(policies).ExecuteAsync(async() => { var storageAccount = CloudStorageAccount.Parse(_configuration[Constants.Storage.ConnectionString]); var tableClient = storageAccount.CreateCloudTableClient(); var table = tableClient.GetTableReference(Constants.Storage.PoisonTableName); await table.CreateIfNotExistsAsync(); var insertOperation = TableOperation.Insert(new PoisonMessageEntity(eventDataWrapper)); await table.ExecuteAsync(insertOperation); }); } catch (Exception ex) { _logger?.LogError(ex, "Unable to save poison message into table"); } }
public PoisonMessageEntity(EventDataWrapper eventDataWrapper) { PartitionKey = eventDataWrapper.Properties[Constants.VehicleId].ToString(); RowKey = eventDataWrapper.Body; }