在KafkaProducer.send(message)上,我收到“序列化Avro消息时出现异常错误”

时间:2018-12-11 01:32:21

标签: java apache-kafka avro confluent-schema-registry

我正在使用Avro生成类。这是我在生产者中的代码,看起来像

zip/. Rar

TweetInfo是由Avro架构生成的类。当我运行程序时,我看到如下的堆栈跟踪

TweetInfo tweetInfo = TweetInfo.newBuilder()
                    .setTweetId(status.getId())
                    .setTweetCreatedAt(status.getCreatedAt().toString())
                    .setTweetMessage(status.getText())
                    .setUserId(user.getId())
                    .setUserCreatedAt(user.getCreatedAt().toString())
                    .setUserName(user.getName())
                    .setUserScreenName(user.getScreenName())
                    .build();

            ProducerRecord<String, TweetInfo> data = new ProducerRecord(KafkaConstants.TOPIC, tweetInfo);
            producer.send(data);

我有动物园管理员和卡夫卡在跑。我还需要运行Schema Registry吗?如果是,那么是否有指导这样做?我找不到。

2 个答案:

答案 0 :(得分:0)

  

无法向端点发送HTTP请求

Confluent Schema Registry Server需要正在运行。并且您可能想尝试自己击中HTTP端点(请参阅下面的文档)。

不确定如何启动,但是可以download Confluent OSS,将其提取到某个位置,然后在终端中,您将要导航到提取的文件夹的bin位置并运行confluent start schema-registry注意:这仅适用于Linux。

或者,如果您希望进行“生产部署”配置,则需要首先编辑该文件夹中etc文件夹中的属性文件,并使用它们各自的脚本运行Zookeeper,Kafka和Registry中的每个。

文档:Running Schema Registry


关于评论

  

当我尝试运行文章中的命令时,出现错误,表明bin无效命令

$ bin/...首先假设您已cd进入提取的confluent-x.x.x文件夹中


顺便说一下,有existing Kafka Connect个项目与Twitter API进行了交互。

答案 1 :(得分:0)

就像@ cricket_007一样,如果您在Windows上,请尝试使用docker。

在指向将运行kafka,zookeeper,架构注册表和kafka rest的docker compose的链接下方,您可以轻松测试生产者。  https://github.com/confluentinc/docker-images/blob/master/examples/fullstack/docker-compose.yml

编辑:对不起,这是旧仓库的链接,请检查下面的仓库,您拥有所有融合的平台(可以删除不需要的平台)!

https://github.com/confluentinc/cp-docker-images/blob/5.0.1-post/examples/cp-all-in-one/docker-compose.yml