Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 从kafka消息获取kafka记录时间戳_Scala_Apache Kafka - Fatal编程技术网

Scala 从kafka消息获取kafka记录时间戳

Scala 从kafka消息获取kafka记录时间戳,scala,apache-kafka,Scala,Apache Kafka,我想要制作人在卡夫卡主题中插入消息的时间戳。 在卡夫卡消费端,我想提取时间戳 class Producer { def main(args: Array[String]): Unit = { writeToKafka("quick-start") } def writeToKafka(topic: String): Unit = { val props = new Properties() props.put("bootstra

我想要制作人在卡夫卡主题中插入消息的时间戳。

在卡夫卡消费端,我想提取时间戳


class Producer {
  def main(args: Array[String]): Unit = {
    writeToKafka("quick-start")
  }
  def writeToKafka(topic: String): Unit = {
    val props = new Properties()
    props.put("bootstrap.servers", "localhost:9094")
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")
    val producer = new KafkaProducer[String, String](props)
    val record = new ProducerRecord[String, String](topic, "key", "value")
    producer.send(record)
    producer.close()
  }
}



class Consumer {
  def main(args: Array[String]): Unit = {
    consumeFromKafka("quick-start")
  }
  def consumeFromKafka(topic: String) = {
    val props = new Properties()
    props.put("bootstrap.servers", "localhost:9094")
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
    props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer")
    props.put("auto.offset.reset", "latest")
    props.put("group.id", "consumer-group")
    val consumer: KafkaConsumer[String, String] = new KafkaConsumer[String, String](props)
    consumer.subscribe(util.Arrays.asList(topic))
    while (true) {
      val record = consumer.poll(1000).asScala
      for (data <- record.iterator)
        println(data.value())
    }
  }
}

阶级制作人{
def main(参数:数组[字符串]):单位={
写卡夫卡(“快速启动”)
}
def writeToKafka(主题:字符串):单位={
val props=新属性()
props.put(“bootstrap.servers”,“localhost:9094”)
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”)
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”)
val producer=新卡夫卡制作人[字符串,字符串](道具)
val记录=新产品记录[字符串,字符串](主题,“键”,“值”)
制作人发送(记录)
制作人关闭()
}
}
阶级消费者{
def main(参数:数组[字符串]):单位={
卡夫卡(“快速启动”)
}
def consumerfromKafka(主题:字符串)={
val props=新属性()
props.put(“bootstrap.servers”,“localhost:9094”)
put(“key.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”)
put(“value.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”)
道具放置(“自动偏移重置”,“最新”)
props.put(“group.id”,“consumer group”)
val消费者:卡夫卡消费者[String,String]=新卡夫卡消费者[String,String](道具)
consumer.subscribe(util.array.asList(主题))
while(true){
val记录=消费者。投票(1000)。协会

对于(数据Kafka提供了自v0.10以来的方法

从该版本开始,您的所有邮件都在
data.timestamp
中有可用的时间戳信息,其中的信息类型由代理上的配置“message.timestamp.type”控制。该值应为
CreateTime
LogAppendTime


在这个版本之前,你必须手工实现它,通常是通过修改你的数据结构。

数据。时间戳应该给你时间戳。但是,我不完全确定现在是什么时候……制作时间,在经纪人中卡夫卡制作的时间,确认成功制作的时间……是的,我认为迈克是对的。应该有一个时间戳。它可能在headers.timestamp下。不确定您的结构。我猜是data.headers.timestamp,但我不确定应该注意的是,时间戳是生产者在创建
ProducerRecord
时插入的:它可以是生产系统的本地历元时间(默认设置)或者应用程序可以将其自定义为更特定于域的内容(例如,如果从多个源获得的数据合成记录,则可能是源数据的最新时间戳)。