private IEnumerable <Dictionary <string, object> > RecieveMessages(ServiceBusSettings settings, ServiceBusReceiver reciever, ILogger logger)
        {
            int total = 0;
            int batchSize;


            while (true)
            {
                if (settings.MaxNumberOfMessages - total >= settings.BatchSize)
                {
                    batchSize = settings.BatchSize;
                }
                else
                {
                    batchSize = settings.MaxNumberOfMessages - total;
                }

                var messages = new IServiceBusMessage[0];
                if (batchSize <= 0)
                {
                    break;
                }


                var messagesTask = Task.Run(() =>
                {
                    try
                    {
                        return(reciever.ReceiveMessageBatchAsync(batchSize, TimeSpan.FromSeconds(MessageBusWaitTime)));
                    }
                    catch (Exception ex)
                    {
                        logger.Error($"Cannot receive messages. {Environment.NewLine}{ex}");
                        return(Task.FromResult(new IServiceBusMessage[0]));
                    }
                });
                messages = messagesTask.Result ?? new IServiceBusMessage[0];
                total   += messages.Length;


                // no message in queue => let's finish
                if (messages.Length == 0)
                {
                    break;
                }

                // enumerate messages
                for (int j = 0; j < messages.Length; j++)
                {
                    var oneLevelMessage = new Dictionary <string, object>(messages[j].Properties);
                    oneLevelMessage.Add("ID", messages[j].Id);
                    logger.Debug($"Enumerating message with consultant '{messages[j].Id}'.");
                    logger.Debug($"oneLevelMessage: '{string.Join(";", oneLevelMessage)}'.");

                    yield return(oneLevelMessage);
                }
            }
        }