【问题标题】:Send message to a kafka topic using java使用java向kafka主题发送消息
【发布时间】:2017-05-24 22:38:02
【问题描述】:

在这里和谷歌搜索了几个星期后,我决定在这里发布它,看看是否有同样问题的人可以举手。

我有一个在 Eclipse Ganymede 中开发的 java 应用程序,使用 tomcat 连接我的本地数据库。问题是我想向公共服务器上发布的 Kafka 主题发送一条简单的消息(“Hello World”)。我已经导入了库并开发了 Kafka 功能,但是当我在调试模式下运行时发生了一些事情。编译时我没有问题或可见错误,但是当我运行应用程序并按下按钮以引发此函数时,它会在 KafkaProducer 函数中停止,因为存在 NoClassDefFoundError kafka.producer ..... 似乎找不到库正确,但我已经看到它在正确导入的构建路径中。

我不确定问题是否与 Kafka 以及与 Eclipse 或 Java SDK (3.6) 的兼容性有关,可能是?有人知道 Kafka 所需的最低 Java 版本吗?

另外,我发现 Kafka 确实使用了 Scala,但我想知道我是否可以使用这个 Eclipse IDE 版本来不改变它。

我发现的另一个解决方案是使用从 Java 应用程序调用的 Python 脚本,但我无法从那里调用它,因为我遵循了几个教程但没有任何效果,但我必须继续这样做,因为它似乎一个更简单的选择。我已经开发了 .py 脚本并与 Kafka 服务器一起工作,现在我必须找到从 Java 和 Python 交换变量的解决方案。如果有人知道这方面的任何好的教程,请告诉我。

在我这几天的简历之后,在撞到了我的头之后,也许有人以前发现了这个错误并且可以帮助我找到解决方案,我真的很感激它,并对悠久的历史感到抱歉。

【问题讨论】:

  • Kafka 的所有依赖项是否通过 Maven 之类的工具(或手动)包含在内?
  • 我从项目属性手动添加

标签: python eclipse apache-kafka kafka-producer-api


【解决方案1】:

请在您要部署到 Tomcat 的 Java 应用程序的 WAR 文件中包含 Kafka 客户端库

【讨论】:

    【解决方案2】:

    请使用 org.apache.kafka.clients.producer.KafkaProducer 而不是 kafka.producer.Producer(这是旧的客户端 API),并确保类路径中有 Kafka 客户端库。客户端库完全使用 Java。它是用 scala 编写的旧 API,服务器端代码也是如此。如果您使用新的客户端 API,则无需在代码中导入服务器库或将其添加到类路径中。

    【讨论】:

      【解决方案3】:

      最后问题与没有很好地添加的库有关。我必须将它添加到 build.xml 文件中,并在此处导入库。也许这对使用旧 Eclipse 版本的人很有用。 所以现在它找到了库,但我必须更新 Java 版本,其他问题。这样就解决了

      【讨论】:

        猜你喜欢
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        • 2019-10-13
        • 2017-12-15
        • 2019-02-27
        相关资源
        最近更新 更多