我正在使用Kafka-Net nuget软件包为Kafka生产和消费做基本的POC。
但是,我的问题是它发布到该主题的消息似乎没有任何时间戳(在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();
}
}
}
}
答案 0 :(得分:0)
在Kafka中,消息的时间戳使用属性 message.timestamp.type [CreateTime,LogAppendTime] 提供,该属性可以在生产者级别或主题级别设置。
消费者在看到消息时将看到消息时间戳。
如果要在生产者级别设置此属性,则需要在Kafka-net API中进行检查。