我可以在java api中编写Kafka consumer来使用python producer生成的消息吗
我有用python编写的生产者代码,可以从twitter获取推文。我创建了一个名为twitter_test的主题 当我使用kafka console consumer时,我可以看到该主题中有很多推文 但当我试图从java消费者那里使用这些消息时,它并没有获取任何数据 下面是我的消费代码我可以在java api中编写Kafka consumer来使用python producer生成的消息吗,java,python,apache-kafka,kafka-consumer-api,Java,Python,Apache Kafka,Kafka Consumer Api,我有用python编写的生产者代码,可以从twitter获取推文。我创建了一个名为twitter_test的主题 当我使用kafka console consumer时,我可以看到该主题中有很多推文 但当我试图从java消费者那里使用这些消息时,它并没有获取任何数据 下面是我的消费代码 import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.Proper
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Properties;
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.BinaryDecoder;
import org.apache.avro.io.DatumReader;
import org.apache.avro.io.DecoderFactory;
import org.apache.avro.specific.SpecificDatumReader;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
public class avro_twitter {
public static void main(String[] args) throws IOException {
Properties props = new Properties();
props.put("bootstrap.servers", "10.16.111.12:9092");
props.put("group.id", "groupid");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "io.confluent.kafka.serializers.KafkaAvroDeserializer");
props.put("auto.offset.reset", "earliest");
props.put("schema.registry.url", "10.16.111.12:8081");
String topic = "twitter_test";
KafkaConsumer<String, GenericRecord> consumer = new KafkaConsumer<String, GenericRecord>(props);
consumer.subscribe(Collections.singletonList(topic));
System.out.println("Reading topic:" + topic);
while (true) {
ConsumerRecords<String, GenericRecord> records = consumer.poll(1000);
for (ConsumerRecord<String, GenericRecord> record: records) {
String authid=record.value().get(1).toString();
String screen_name=record.value().get(1).toString();
String description=record.value().get(2).toString();
System.out.println(authid);
}
}
}
import java.io.IOException;
导入java.util.array;
导入java.util.Collections;
导入java.util.Properties;
导入org.apache.avro.Schema;
导入org.apache.avro.generic.GenericData;
导入org.apache.avro.generic.GenericRecord;
导入org.apache.avro.io.BinaryDecoder;
导入org.apache.avro.io.DatumReader;
导入org.apache.avro.io.DecoderFactory;
导入org.apache.avro.specific.SpecificDatumReader;
导入org.apache.kafka.clients.consumer.ConsumerRecord;
导入org.apache.kafka.clients.consumer.ConsumerRecords;
导入org.apache.kafka.clients.consumer.KafkaConsumer;
导入org.apache.kafka.clients.producer.KafkaProducer;
导入org.apache.kafka.clients.producer.producer;
导入org.apache.kafka.clients.producer.ProducerRecord;
公共类avro_twitter{
公共静态void main(字符串[]args)引发IOException{
Properties props=新属性();
道具放置(“bootstrap.servers”,“10.16.111.12:9092”);
props.put(“group.id”、“groupid”);
put(“key.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
put(“value.deserializer”、“io.confluent.kafka.serializer.KafkaAvroDeserializer”);
道具放置(“自动偏移重置”、“最早”);
props.put(“schema.registry.url”,“10.16.111.12:8081”);
String topic=“twitter\u测试”;
卡夫卡消费者=新卡夫卡消费者(道具);
consumer.subscribe(Collections.singletonList(主题));
System.out.println(“阅读主题:+topic”);
虽然(正确){
ConsumerRecords记录=consumer.poll(1000);
对于(消费者记录:记录){
字符串authid=record.value().get(1.toString();
字符串screen_name=record.value().get(1.toString();
字符串描述=record.value().get(2.toString();
System.out.println(authid);
}
}
}
非常感谢任何帮助1.任何例外情况?2.您尝试过更改组id吗?3.您尝试过在没有Avro解码的情况下使用原始消息吗?请您也共享生产者代码吗?以下代码片段看起来至少有点奇怪:props.put(“group.id”,“groupid”);您是否在架构注册表中注册了avro架构?