private async static Task ProduzirAssincronamenteComChave()
        {
            console = new Infra.DualConsoleMessageWriter(Console.WindowHeight);
            var producer = new ProdutorAssincrono2(GerarBrokerConfig(), console);

            while (true)
            {
                console.Write("Digite a mensagem a ser enviada ('SAIR' para finalizar): ", Infra.MessageType.Input);
                string cmd = Console.ReadLine();
                if (cmd.ToUpper() == "SAIR")
                {
                    return;
                }

                console.Write("Digite a chave (key) para a mensagem: ", Infra.MessageType.Input);
                string key = Console.ReadLine();

                await producer.Produzir(_topico, key, cmd);
            }
        }
        private static async Task ProduzirComGarantiaDeEntregaEOrdem()
        {
            console = new Infra.DualConsoleMessageWriter(Console.WindowHeight);

            var brokerComGarantiaDeEntregaEOrdem = GerarBrokerConfig();

            brokerComGarantiaDeEntregaEOrdem.ProducerConfig.Acks                  = Acks.All;
            brokerComGarantiaDeEntregaEOrdem.ProducerConfig.MaxInFlight           = 1;
            brokerComGarantiaDeEntregaEOrdem.ProducerConfig.MessageSendMaxRetries = 10000000;
            var producerComGarantiaDeEntregaEOrdem = new ProdutorAssincrono2(brokerComGarantiaDeEntregaEOrdem, console);

            while (true)
            {
                console.Write("Digite a mensagem a ser enviada ('SAIR' para finalizar): ", Infra.MessageType.Input);
                string cmd = Console.ReadLine();
                if (cmd.ToUpper() == "SAIR")
                {
                    return;
                }

                await producerComGarantiaDeEntregaEOrdem.Produzir <Null, string>(_topico, null, cmd);
            }
        }