private async Task <bool> Callback(JobContextMessage jobContextMessage, CancellationToken cancellationToken) { try { await _auditor.AuditStartAsync(jobContextMessage); T obj = _mapper.MapTo(jobContextMessage); if (!await _callback.Invoke(obj, cancellationToken)) { await _auditor.AuditJobFailAsync(jobContextMessage); return(false); } jobContextMessage = _mapper.MapFrom(obj); jobContextMessage.TopicPointer++; await _auditor.AuditEndAsync(jobContextMessage); if (jobContextMessage.TopicPointer >= jobContextMessage.Topics.Count) { return(true); } await _queuePublishService.PublishAsync(jobContextMessage); } catch (Exception ex) { _logger.LogError("Exception thrown in JobManager callback", ex); await _auditor.AuditJobFailAsync(jobContextMessage); return(false); } return(true); }