【问题标题】:Kafka 2.1.0 Java Consumer vs Scala ConsumerKafka 2.1.0 Java 消费者与 Scala 消费者
【发布时间】:2019-01-07 11:42:32
【问题描述】:

我想将我团队的 Kafka 集群从版本 0.10.1.1 升级到版本 2.1.0。顺便说一句,Kafka 官方文档里有这么一段话。

Kafka Official Docu

请注意,不再维护的旧 Scala 客户端不支持 0.11 中引入的消息格式,因此为避免转换成本(或利用仅一次语义),必须使用较新的 Java 客户端。

我不太理解那句话。目前我们的团队正在使用用 Scala 编写的 Kafka Consumer Application。但是我们应该把它变成Java吗?如果我们目前使用 Scala 编写的应用程序,我不知道它到底有什么缺点。

【问题讨论】:

  • 不再支持 Scala Kafka 客户端,您应该使用 Scala 代码中的 Java 实现。
  • 感谢您的评论。 “不再支持”意味着“我可以使用它,但它会导致性能问题和其他问题。”?对吗?
  • 使用它意味着如果您将 Kafka Brokers 从 0.10.1.1 更新到 2.1.0,您的客户端将不再“使用”相同的协议,并且可能无法正常工作。
  • @Dogil,您无需将 Scala 代码更改为 Java。鉴于 Scala 也在 JVM 上运行,它可以与 Java 完全互操作。您只需要更改直接与 Kafka 对话的代码部分,以使用 Java API (仍在 scala 代码中)
  • @Dogil 我不知道,抱歉。我没有使用过 Kafka——我只是指出你可以从 Scala 调用 Java。

标签: java scala apache-kafka


【解决方案1】:

我认为您将 Kafka 核心模块中基于 Scala 的旧 kafka.consumerkafka.producer 包与用 Java 实现的新 kafka-clients 依赖项混淆了。

如果你的导入是这些,你就可以了,不需要使用不同的类,升级后可能只需要重写一些方法调用的参数

org.apache.kafka.clients.consumer.KafkaConsumer
org.apache.kafka.clients.producer.KafkaProducer

我们应该把它变成Java吗?如果我们目前使用 Scala 编写的应用程序,我不知道它到底有什么缺点

Java 更加冗长,并且没有 Scala 那样好的类型系统。欢迎您在 Scala、Kotlin、Clojure 等中编写相同的代码……归根结底,这一切都在 JVM 中运行

【讨论】:

  • 感谢@cricket_007.. 自 0.11.0.0 起已弃用的“Scala 消费者”这句话已被删除。自 0.10.0.0 以来,Java 使用者一直是推荐的选项。请注意,即使代理升级到 2.0.0,1.1.0(及更早版本)中的 Scala 消费者仍将继续工作。在 Kafka 官方文档中接缝表示我不应该使用 Scala。
  • @Dogil 不。这是说不要使用 基于 Scala 的客户端 API。您可以在任何 JVM 语言中使用新的基于 Java 的 API
  • 例如 Scala Kafka Streams API 是在 Kafka 2.0 中加入的,实际上推荐给使用 Scala 的人,因为它比 Java API 更容易使用。
  • 感谢您的解释。我现在拿到照片了。
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多