/// <summary>
        /// The Handle
        /// </summary>
        /// <param name="request">The request<see cref="SendServiceOutPutMessageCommand"/></param>
        /// <param name="cancellationToken">The cancellationToken<see cref="CancellationToken"/></param>
        /// <returns>The <see cref="Task{MessageProcessResponse}"/></returns>
        public async Task <MessageProcessResponse> Handle(SendServiceOutPutMessageCommand request, CancellationToken cancellationToken)
        {
            ICoreKeyVaultClient    keyVault               = app.ApplicationServices.GetRequiredService <ICoreKeyVaultClient>();
            IntegrationEvent       integrationEvent       = null;
            MessageProcessResponse messageProcessResponse = MessageProcessResponse.Abandon;

            try
            {
                request          = request ?? throw new ArgumentNullException(nameof(request));
                integrationEvent = PrepareOutputMessage(request.Items, request.Message);
                if (request.Status)
                {
                    await sendMngr.SendAsync(await keyVault.GetSecret(BusinessValidationConstants.KEYVAULT_BUSINESSVALIDATIONSUCCESSTOPIC), integrationEvent);

                    messageProcessResponse = MessageProcessResponse.Complete;
                }
                else
                {
                    integrationEvent.Body.ServiceOutput = new ServiceOutput();
                    await sendMngr.SendAsync(await keyVault.GetSecret(BusinessValidationConstants.ErrorTopicNameKeyName), integrationEvent);

                    messageProcessResponse = MessageProcessResponse.Complete;
                }
                return(messageProcessResponse);
            }
            catch (Exception ex)
            {
                integrationEvent = GetIntegrationEvent(request?.Message);
                integrationEvent.Body.ServiceOutput = new ServiceOutput();
                await sendMngr.SendAsync(await keyVault.GetSecret(BusinessValidationConstants.KEYVAULT_ERRORTOPICNAME), integrationEvent);

                Log.Error(ex.Message);
                return(MessageProcessResponse.Abandon);
            }
        }
        public async Task RunAsync([QueueTrigger(QueueNames.DistributionQueueName)]
                                   string queueItemContents,
                                   CancellationToken cancellationToken)
        {
            _logger.SetInternalRequestId(Guid.NewGuid());
            _logger.Info($"Starting to process queue item {queueItemContents}");

            var distribution = JsonConvert.DeserializeObject <Distribution>(queueItemContents);

            await _sendManager.SendAsync(distribution, cancellationToken);
        }