Java 60000毫秒后元数据中不存在主题

Java 60000毫秒后元数据中不存在主题,java,apache-kafka,kafka-producer-api,Java,Apache Kafka,Kafka Producer Api,我在MSK(卡夫卡)中创建了一个主题。 我还注册了avro模式。 现在我正试图生成一条主题消息,但当我运行我的producer时,我发现下面的错误 java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Topic AVRO-AUDIT_EVENT not present in metadata after 60000 ms. 下面是我的java代码,用于生成avro消息

我在MSK(卡夫卡)中创建了一个主题。 我还注册了avro模式。 现在我正试图生成一条主题消息,但当我运行我的producer时,我发现下面的错误

java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Topic AVRO-AUDIT_EVENT not present in metadata after 60000 ms.
下面是我的java代码,用于生成avro消息

String topicName = "AVRO-AUDIT_EVENT";

        Properties props = new Properties();
        props.put("bootstrap.servers",
                "b-3.*****:9092,b-4.****:9092,b-5.****:9092");
        props.put("bootstrap.servers", "localhost:9092,localhost:9093");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "io.confluent.kafka.serializers.KafkaAvroSerializer");
        props.put("schema.registry.url", "http://localhost:8081/subjects/AVRO-AUDIT-EVENT/versions/");

        JSONObject job = new JSONObject(json);
        String bodyofJson = job.getString("body");
        JSONObject bodyJsonObj = new JSONObject(bodyofJson);
        System.out.println(bodyJsonObj.get("ID"));

        Producer<String, String> producer = new KafkaProducer<>(props);
        try {

            producer.send(new ProducerRecord<String, String>(topicName, bodyJsonObj.get("ID").toString(), bodyofJson))
                    .get();

            System.out.println("Complete");
        } catch (Exception ex) {
            ex.printStackTrace(System.out);
        } finally {
            producer.close();
        }
String topicName=“AVRO-AUDIT\u事件”;
Properties props=新属性();
props.put(“bootstrap.servers”,
“b-3.******:9092,b-4.***:9092,b-5.***:9092”);
put(“bootstrap.servers”,“localhost:9092,localhost:9093”);
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“io.confluent.kafka.serializers.KafkaAvroSerializer”);
put(“schema.registry.url”http://localhost:8081/subjects/AVRO-审计-事件/版本/”;
JSONObject作业=新的JSONObject(json);
String bodyofJson=job.getString(“body”);
JSONObject bodyJsonObj=新的JSONObject(bodyofJson);
System.out.println(bodyJsonObj.get(“ID”);
制作人=新卡夫卡制作人(道具);
试一试{
send(新的ProducerRecord(topicName,bodyJsonObj.get(“ID”).toString(),bodyofJson))
.get();
系统输出打印项次(“完成”);
}捕获(例外情况除外){
例如printStackTrace(系统输出);
}最后{
producer.close();
}
我可以列出主题,也可以查看主题名称,还可以阅读主题消息。但当我运行此命令时,会出现此错误


关于

我想你不是在本地经营卡夫卡

删除此行

props.put("bootstrap.servers", "localhost:9092,localhost:9093");
也可以在AWS中部署schema registry,并更改此行(以及地址)


另外,如果要发送Avro,请创建一个
genericord
Avro对象,而不是JSON字符串。否则,您的模式就是
“string”

我假设您没有在本地运行Kafka

删除此行

props.put("bootstrap.servers", "localhost:9092,localhost:9093");
也可以在AWS中部署schema registry,并更改此行(以及地址)


另外,如果要发送Avro,请创建一个
genericord
Avro对象,而不是JSON字符串。否则,您的模式就是
“string”

在我的例子中,它在周末失去了与所有节点的连接。似乎它不会自动恢复连接


重新启动服务后,它工作正常。

在我的情况下,周末它与所有节点失去了连接。似乎它不会自动恢复连接


重新启动服务后,它工作正常。

很抱歉,我没有获取您的point AVRO对象。我如何创建它。我正在从amazon API输入解析json。您的代码根本不生成AVRO对象。删除
JSONObject
的所有用法,请阅读我确实修改了,但现在我得到了
org.apache.kafka.common.errors.SerializationException:错误序列化Avro消息
Error。。所以我使用模式和泛型avro是斗牛士吗?我在
http://localhost:8081/subjects/AVRO-AUDIT-EVENT/versions/
所以我正确地给出了这个位置?如果您完成了完整的视频课程演练,可能会对您有所帮助。尽管很抱歉,我没有获得您的point AVRO对象。我如何创建它。我正在解析json从AmazonAPI输入..您的代码根本不生成Avro对象。删除
JSONObject
的所有用法,请阅读我确实修改了,但现在我得到了
org.apache.kafka.common.errors.SerializationException:错误序列化Avro消息
Error。。所以我使用模式和泛型avro是斗牛士吗?我在
http://localhost:8081/subjects/AVRO-AUDIT-EVENT/versions/
所以我正确地给出了这个位置?如果您遵循完整的视频课程演练,可能会对您有所帮助