当前位置: 首页 > 知识库问答 >
问题:

KafkaProducer用于键控和非键控ProducerRecords

袁鹤轩
2023-03-14

我使用的是Scala中的0.9Kafka Java客户机。

scala> val kafkaProducer = new KafkaProducer[String, String](props)
scala> val keyedRecord = new ProducerRecord("topic", "key", "value")
scala> kafkaProducer.send(keyedRecord)
scala> val unkeyedRecord = new ProducerRecord("topic", "value")
res8: org.apache.kafka.clients.producer.ProducerRecord[Nothing,String] =
        ProducerRecord(topic=topic, partition=null, key=null, value=value

scala> kafkaProducer.send(res8)
<console>:17: error: type mismatch;
 found   :   org.apache.kafka.clients.producer.ProducerRecord[Nothing,String]
 required: org.apache.kafka.clients.producer.ProducerRecord[String,String]
 Note: Nothing <: String, but Java-defined class ProducerRecord is invariant in type K.
 You may wish to investigate a wildcard type such as `_ <: String`. (SLS 3.2.10)
   kafkaProducer.send(res8)
                      ^

KafkaProducer中更改参数k的方差可以解决这个问题吗?

共有1个答案

欧阳昊阳
2023-03-14

看起来答案就在注释中,但是为了说明它,Scala在没有显式提供类型时使用类型推断。自从你写了:

val unkeyedRecord = new ProducerRecord("topic", "value")

没有提供键,它变成null,Scala的类型系统推断这是一个Nothing实例。要解决这个问题,请显式声明类型:

val unkeyedRecord = new ProducerRecord[String,String]("topic", "value")
 类似资料:
  • 问题内容: 我试图在Flink中的KeyedStream上执行映射操作: JsonToObjectMapper运算符的输出是 MessageObject 类的POJO,它具有String字段“ keyfield ”。然后,将流键入此字段。 MessageProcessorStateful是一个RichMapFunction,如下所示: 该代码引发NullPointer异常: 尽管我已经验证了’ke

  • 上一节的示例程序,演示了播放器内核的基础使用,但是只能循环播放,不能控制的播放器叫什么播放器。因此,这一节我们使用之前写的 button 按键库驱动按键,并实现按键控制播放器的行为:上一曲、下一曲、暂停/播放,音量调节。 硬件连接 以正点原子探索者 STM32F4 开发板为例。开发板上有四个供用户使用的按键 KEY_UP/KEY0/1/2,通过原理图可以看出,KEY0/1/2 三个按键对应的 PI

  • 我遇到了一个非常有趣的场景。我知道n+1问题和FetchType.Eager和FetchMode.join。我有一个家长实体学校,它有2@onetomany儿童实体ie学生和教师。我需要所有3个,所以使用fetchtype.eager和fetchmode.join。 学校实体 学生实体 教师实体 学校回购 如果我通过findById方法获取School对象,即表的主键。 生成的SQL是学校、学生和

  • 我对闪身是个新手。我正在尝试在我的应用程序中启用检查点和状态。我从Flink文档中看到了我们是如何存储键控状态的。但是我想知道我们是否可以存储非键控状态(的状态)

  • 有谁能给我一些建议或链接的所有控制的Android Studio键盘快捷键?

  • 本文向大家介绍C#控制键盘按键的常用方法,包括了C#控制键盘按键的常用方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#控制键盘按键的常用方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。