public async Task ProduceMessage(SchedulerCallbackMessage message, string label)
        {
            var topicClient = new TopicClient("Endpoint", "topicname");

            var jsonMessage  = JsonConvert.SerializeObject(message);
            var topicMessage = new Message(Encoding.UTF8.GetBytes(jsonMessage))
            {
                ContentType = "application/json",
                TimeToLive  = TimeSpan.FromHours(24),
                Label       = label
            };
            await topicClient.SendAsync(topicMessage);

            await topicClient.CloseAsync();
        }
        private async Task ConsumeMessage(Message message, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"{DateTimeOffset.UtcNow}: Message received!");
            var response = new SchedulerCallbackMessage()
            {
                Started = DateTime.UtcNow
            };

            using var scope = _scopeFactory.CreateScope();
            var service = scope.ServiceProvider.GetRequiredService <ISchedulerHandler>();
            var trigger = message.GetBodyAs <SchedulerTriggerMessage>();

            try
            {
                var result = await service.TriggerScheduledTask(trigger.Id);

                response.Message = result.Message;
                response.Result  = result.Result;
            }
            catch (Exception e)
            {
                var exception = new MessageException();

                if (e.InnerException != null)
                {
                    _logger.LogCritical(e.InnerException, e.InnerException.Message);
                    exception.Message    = e.InnerException.Message;
                    exception.StackTrace = e.InnerException.StackTrace;
                    exception.Site       = e.InnerException.TargetSite?.Name;
                }
                else
                {
                    _logger.LogCritical(e, e.Message);
                    exception.Message    = e.Message;
                    exception.StackTrace = e.StackTrace;
                    exception.Site       = e.TargetSite?.Name;
                }

                response.Exception = exception;
                response.Result    = Result.Failure;
            }

            response.Finished = DateTime.UtcNow;

            await _responseProducer.ProduceMessage(response, trigger.CallbackLabel);

            await Task.CompletedTask;
        }