public async Task <InvokeResult> AddItemAsync(DataStreamRecord item) { var recordId = DateTime.UtcNow.ToInverseTicksRowKey(); item.Data.Add(_stream.TimeStampFieldName, item.GetTimeStampValue(_stream)); item.Data.Add("sortOrder", item.GetTicks()); item.Data.Add("deviceId", item.DeviceId); item.Data.Add("id", recordId); item.Data.Add("dataStreamId", _stream.Id); var result = await _client.IndexAsync(item.Data, idx => idx .Index(_stream.ESIndexName) .Type(_stream.ESTypeName) .Id(recordId)); if (result.IsValid) { return(InvokeResult.Success); } else { if (result.OriginalException != null) { return(InvokeResult.FromError(result.OriginalException.Message)); } else { return(InvokeResult.FromError(result.ServerError.Error.Reason)); } } }
public async Task <InvokeResult> AddItemAsync(DataStreamRecord item) { var recordId = DateTime.UtcNow.ToInverseTicksRowKey(); item.Data.Add(_stream.TimeStampFieldName, item.GetTimeStampValue(_stream)); item.Data.Add("sortOrder", item.GetTicks()); item.Data.Add("deviceId", item.DeviceId); item.Data.Add("id", recordId); item.Data.Add("dataStreamId", _stream.Id); var fileName = $"{recordId}.json"; var blob = _container.GetBlockBlobReference(fileName); blob.Properties.ContentType = "application/json"; var json = JsonConvert.SerializeObject(item.Data); var numberRetries = 5; var retryCount = 0; var completed = false; while (retryCount++ < numberRetries && !completed) { try { await blob.UploadTextAsync(json); } catch (Exception ex) { if (retryCount == numberRetries) { _instanceLogger.AddException("AzureBlobConnector_AddItemAsync", ex); return(InvokeResult.FromException("AzureBlobConnector_AddItemAsync", ex)); } else { _instanceLogger.AddCustomEvent(LagoVista.Core.PlatformSupport.LogLevel.Warning, "AzureBlobConnector_AddItemAsync", "", ex.Message.ToKVP("exceptionMessage"), ex.GetType().Name.ToKVP("exceptionType"), retryCount.ToString().ToKVP("retryCount")); } await Task.Delay(retryCount * 250); } } return(InvokeResult.Success); }
public async Task <InvokeResult> AddItemAsync(DataStreamRecord item) { var recordId = DateTime.UtcNow.ToInverseTicksRowKey(); item.Data.Add(_stream.TimeStampFieldName, item.GetTimeStampValue(_stream)); item.Data.Add("sortOrder", item.GetTicks()); item.Data.Add("deviceId", item.DeviceId); item.Data.Add("id", recordId); item.Data.Add("dataStreamId", _stream.Id); var json = JsonConvert.SerializeObject(item.Data); var buffer = Encoding.UTF8.GetBytes(json); var eventData = new EventData(buffer); var numberRetries = 5; var retryCount = 0; var completed = false; while (retryCount++ < numberRetries && !completed) { try { await _eventHubClient.SendAsync(eventData); } catch (Exception ex) { if (retryCount == numberRetries) { _instanceLogger.AddException("AzureTableStorageConnector_GetItemsAsync", ex); return(InvokeResult.FromException("AzureBlobConnector_AddItemAsync", ex)); } else { _instanceLogger.AddCustomEvent(LagoVista.Core.PlatformSupport.LogLevel.Warning, "AzureTableStorageConnector_GetItemsAsync", "", ex.Message.ToKVP("exceptionMessage"), ex.GetType().Name.ToKVP("exceptionType"), retryCount.ToString().ToKVP("retryCount")); } await Task.Delay(retryCount * 250); } } return(InvokeResult.Success); }