¿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,>
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:
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.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#:
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.