Нет отметки времени в производимых сообщениях в Kafka-Net - PullRequest
0 голосов
/ 06 марта 2019

Я использую пакет nuget Kafka-Net, чтобы сделать базовый POC для производства и потребления Kafka.

Однако у меня проблема в том, что сообщения, которые она публикует в теме, не имеют временных отметок (при просмотре в последней версии Kafka Tool). Это связано с тем, что пакет Kafka-Net не был обновлен для поддержки способа обработки меток времени в более новых версиях Kafka? Нужно ли переходить на использование Confluent Kafka?

Сообщения добавляются в тему с правильными смещениями и полезной нагрузкой, они просто имеют пустую метку времени.

Это мой код

using System;
using System.Collections.Generic;
using System.Configuration;
using KafkaNet;
using KafkaNet.Model;
using KafkaNet.Protocol;

namespace KafkaProducer
{
    class Program
    {
        static void Main(string[] args)
        {
            var brokerUri = ConfigurationManager.AppSettings["BrokerUri"];

            Console.WriteLine("Enter the topic name to publish to");
            var topicName = Console.ReadLine();

            Console.WriteLine();
            Console.WriteLine($"Now publishing to topic {topicName}, enter messages separated by a carriage return");
            Console.WriteLine();

            var uri = new Uri(brokerUri);
            var options = new KafkaOptions(uri);
            var router = new BrokerRouter(options);
            var client = new Producer(router);

            while (true)
            {
                var payload = Console.ReadLine();
                if (payload == "exit") break;
                var msg = new Message(payload);                
                client.SendMessageAsync(topicName, new List<Message> { msg }).GetAwaiter().GetResult();
            }
        }
    }
}

1 Ответ

0 голосов
/ 06 марта 2019

В Kafka отметка времени в сообщениях предоставляется с использованием свойства message.timestamp.type [CreateTime, LogAppendTime] , которое можно установить на уровне производителя или на уровне темы.

Потребитель увидит метку времени сообщения, когда увидит сообщения.

Если вы хотите установить это свойство на уровне производителя, вам нужно проверить это в Kafka-net API.

https://kafka.apache.org/documentation/#topicconfigs

...