public async Task ProcessEventsAsync(PartitionContext context, IEnumerable <EventData> events) { // Workaround for event hub sending null on timeout events = events ?? Enumerable.Empty <EventData>(); foreach (var eventData in events) { var updateTemperatureEvent = JsonConvert.DeserializeObject <UpdateTemperatureEvent>(Encoding.UTF8.GetString(eventData.GetBytes())); eventData.Properties["BuildingId"] = _buildingLookupService.GetBuildingId(updateTemperatureEvent.DeviceId); } if (!await _elasticSearchWriter.WriteAsync(events.ToList(), _token).ConfigureAwait(false)) { return; } try { EventData checkpointEventData = events.LastOrDefault(); await context.CheckpointAsync(checkpointEventData); WarmStorageEventSource.Log.CheckpointCompleted(ProcessorName, _eventHubName, context.Lease.PartitionId, checkpointEventData.Offset); } catch (Exception ex) { if (!(ex is StorageException || ex is LeaseLostException)) { throw; } WarmStorageEventSource.Log.UnableToCheckpoint(ex, ProcessorName, _eventHubName, context.Lease.PartitionId); } }
public async Task ProcessEventsAsync(PartitionContext context, IEnumerable <EventData> events) { // Workaround for event hub sending null on timeout events = events ?? Enumerable.Empty <EventData>(); if (!await _elasticSearchWriter.WriteAsync(events.ToList(), _token).ConfigureAwait(false)) { return; } try { EventData checkpointEventData = events.LastOrDefault(); await context.CheckpointAsync(checkpointEventData); WarmStorageEventSource.Log.CheckpointCompleted(ProcessorName, _eventHubName, context.Lease.PartitionId, checkpointEventData.Offset); } catch (Exception ex) { if (!(ex is StorageException || ex is LeaseLostException)) { throw; } WarmStorageEventSource.Log.UnableToCheckpoint(ex, ProcessorName, _eventHubName, context.Lease.PartitionId); } }