es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo escribir mensajes en el productor de una vez y leer 1 mensaje por minuto con el consumidor?

¿Cómo puedo escribir mensajes en el productor de una vez y leer 1 mensaje por minuto con el consumidor?

Propiedades de configuración que puedo usar:

imagen de configuración de propiedades

nota: tenga en cuenta “max.poll.records” que no puedo usar el método

Mi clase de consumidor:

var settings = ConfigurationManager.KafkaSettings.Topics[Topics.FaturaKaydetViaTp];

LogManager.Logger.Debug("Iniciando consumidor para {topic}", settings.TopicName);

using (var consumer = new ConsumerBuilder<ignore, mailmessage="">(consumerConfig).SetValueDeserializer(new ObjectDeserializer<mailmessage>()).Build())
{
    LogManager.Logger.Debug("Consumidor iniciado");

    LogManager.Logger.Debug("Suscribiéndose a {topic}", settings.TopicName);

    consumer.Subscribe(settings.TopicName);

    try
    {
        while (true)
        {
            try
            {

                var cr = consumer.Consume();

                LogManager.Logger.Debug("Mensaje recibido para '{topic}' en: '{topicPartitionOffset}'.", settings.TopicName, cr.TopicPartitionOffset);
                if (HandleOnMessage(cr.Value))
                    if (ConfigurationManager.KafkaSettings.AutoCommit == false)
                        consumer.Commit(cr);
            }
            catch (ConsumeException e)
            {
                LogManager.Logger.Fatal(e, "ConsumeException");
            }
        }
    }
    catch (OperationCanceledException)
    {
        // Asegurarse de que el consumidor abandone el grupo correctamente y se finalicen los desplazamientos finales.
        consumer.Close();
    }
}

</ignore,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para escribir mensajes en el productor a la vez y leer 1 mensaje por minuto con el consumidor utilizando c#, apache-kafka, kafka-consumer-api y confluent-kafka-dotnet, existen varias propiedades de configuración que se pueden establecer:

    1. batch.size – esto especifica la cantidad de mensajes que se agruparán antes de enviarlos. Establecer un número mayor reducirá la frecuencia de envío de mensajes, lo que a su vez reducirá la sobrecarga de la red.
    2. linger.ms – esto especifica la cantidad de tiempo (en milisegundos) que se espera antes de enviar un lote de mensajes. Establecer un valor más alto permitirá agrupar más mensajes juntos, pero aumentará la latencia.

    Para leer solo 1 mensaje por minuto con el consumidor, puedes establecer la propiedad max.poll.records en 1. Esto asegurará que solo se devuelva un registro en cada solicitud de encuesta.

    Aquí tienes un ejemplo de cómo configurar estas propiedades en código C#:

    var producerConfig = new ProducerConfig
    {
        BootstrapServers = "localhost:9092",
        BatchSize = 1000,
        LingerMs = 1000
    };
    
    var consumerConfig = new ConsumerConfig
    {
        BootstrapServers = "localhost:9092",
        GroupId = "my-group",
        MaxPollRecords = 1
    };
    

    Con estas propiedades configuradas, el productor agrupará los mensajes y los enviará a intervalos regulares, mientras que el consumidor solo leerá un mensaje por minuto.

Comments are closed.