You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka命令行生产报错:字符'<'(编码60),期望有效值

解决Kafka Avro控制台生产者的<字符报错问题

我来帮你搞定这个头疼的报错!你遇到的character ('<' (code 60)): expected a valid value错误,其实原因很明确:kafka-avro-console-producer必须和Schema Registry配合工作,但你的环境要么没部署Schema Registry,要么生产者命令没指定它的地址,导致生产者收到了HTML格式的响应(比如404页面的<html>标签),而不是预期的JSON格式schema数据,这才触发了这个解析错误。

下面是一步步的解决办法:

1. 先确认Schema Registry已部署运行

你是用docker-compose部署的Kafka,而Confluent的Avro工具依赖Schema Registry——如果你的docker-compose.yml里没包含这个组件,那肯定会出问题。检查一下你的配置文件,应该要有类似这样的Schema Registry服务定义:

services:
  schema-registry:
    image: confluentinc/cp-schema-registry:4.0.0
    hostname: schema-registry
    depends_on:
      - kafka
    ports:
      - "8081:8081"
    environment:
      SCHEMA_REGISTRY_HOST_NAME: schema-registry
      SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: zookeeper:2181

如果没有的话,把这段配置加进去,然后重启服务:

docker-compose up -d

2. 修正生产者命令,指定Schema Registry地址

你原来的命令里漏掉了关键的schema.registry.url参数,这个参数告诉Avro生产者去哪里找Schema Registry。另外注意你写的value.schema是不完整的,得补全字段定义。修正后的完整命令应该是这样的:

kafka-avro-console-producer \
  --broker-list localhost:9092 \
  --topic simple \
  --property schema.registry.url=http://localhost:8081 \
  --property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}'

执行这个命令后,你就可以输入符合schema格式的消息(比如{"f1": "test message"})来生产数据了。

3. 验证Schema Registry是否正常工作

在执行生产者命令前,你可以先curl一下Schema Registry的地址,确认它返回的是JSON响应:

curl http://localhost:8081/subjects

如果返回空数组[]或者已有的主题schema列表,说明它已经正常运行了。

额外小提示

你提到还没在Schema Registry里创建schema,这完全没问题——kafka-avro-console-producer会自动把你通过value.schema指定的结构注册到Schema Registry中,不需要手动提前创建。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:14:51