public async Task ProcessEventsAsync(PartitionContext context, IEnumerable <EventData> messages) { //forward to message processor List <QueueMessage> qms = messages.Select(ed => Converter.ToQueueMessage(ed, context.PartitionId)).ToList(); await _messageProcessor.ProcessMessagesAsync(qms).ConfigureAwait(false); //checkpoint DateTimeOffset now = DateTimeOffset.Now; if (now - _lastCheckpointTime >= CheckpointInterval) { await context.CheckpointAsync().ConfigureAwait(false); _lastCheckpointTime = now; } }
private async Task ProcessMessagesAsync(Message message, CancellationToken token) { T payload = null; if (message.Body[0] == charAt) { payload = OneSolution.ServiceBus.XmlMessageExtention.ParseXmlMessage <T>(message); } else { payload = JsonSerializer.Deserialize <T>(Encoding.UTF8.GetString(message.Body)); } var lockToken = message.SystemProperties.LockToken; await processor.ProcessMessagesAsync(payload, lockToken, token).ConfigureAwait(false); await receiver.CompleteAsync(lockToken).ConfigureAwait(false); }