示例#1
0
 private SensorDto Deserialize(EventDataWrapper eventDataWrapper)
 {
     try
     {
         return(JsonConvert.DeserializeObject <SensorDto>(eventDataWrapper.Body));
     }
     catch (JsonException)
     {
         _poisonMessageRepository.Save(eventDataWrapper).Wait();
         return(null);
     }
 }
示例#2
0
        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");
            }
        }
示例#3
0
 public PoisonMessageEntity(EventDataWrapper eventDataWrapper)
 {
     PartitionKey = eventDataWrapper.Properties[Constants.VehicleId].ToString();
     RowKey       = eventDataWrapper.Body;
 }