У меня есть класс User, и я разделяю его как avro (используя сериализатор Confluent avro и реестр схем) и публикую его в теме Kafka. Я заставил потребителя печатать данные на консоль, и он отлично работает. Сейчас я пытаюсь создать исходный объект из этих данных. Например, я публикую объект «Пользователь» как avro в теме Kafka. Я пытаюсь воссоздать этот пользовательский объект (вместо вывода на консоль) после его использования. Это возможно?
Ниже мой код
Класс пользователя
public class User {
int id;
String name;
public User(){}
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Потребительский код
User user = new User();
Properties props = new Properties();
props.put("bootstrap.servers", "127.0.0.1:9092");
props.put("group.id", "avro-consumer-group");
props.put("key.deserializer", io.confluent.kafka.serializers.KafkaAvroDeserializer.class);
props.put("value.deserializer", io.confluent.kafka.serializers.KafkaAvroDeserializer.class);
props.put("schema.registry.url","http://127.0.0.1:8081");
KafkaConsumer<String, GenericRecord> consumer = new KafkaConsumer<String, GenericRecord>(props);
consumer.subscribe(Arrays.asList("avrotesttopic"));
System.out.println("Subscribed to topic " + "avrotesttopic");
while (true) {
ConsumerRecords<String, GenericRecord> records = consumer.poll(100);
for (org.apache.kafka.clients.consumer.ConsumerRecord<String, GenericRecord> record : records){
System.out.printf("value = %sn",record.value());
//output-> value = {"id": 10, "name": "testName"}
}
}
Спасибо