示例#1
0
        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);
        }