Created
February 7, 2022 19:04
-
-
Save jwkidd3/cf2ee0515bc606eded9b129c0efbcfb2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.kiddcorp; | |
import org.apache.avro.Schema; | |
import org.apache.avro.generic.GenericData; | |
import org.apache.avro.generic.GenericRecord; | |
import org.apache.kafka.clients.producer.KafkaProducer; | |
import org.apache.kafka.clients.producer.ProducerConfig; | |
import org.apache.kafka.clients.producer.ProducerRecord; | |
import org.apache.kafka.common.serialization.StringSerializer; | |
import io.confluent.kafka.serializers.KafkaAvroSerializer; | |
import java.util.Properties; | |
public class AvroProducer { | |
public static void main(String[] args) { | |
Properties props = new Properties(); | |
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); | |
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, | |
org.apache.kafka.common.serialization.StringSerializer.class); | |
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, | |
io.confluent.kafka.serializers.KafkaAvroSerializer.class); | |
props.put("schema.registry.url", "http://localhost:8081"); | |
KafkaProducer producer = new KafkaProducer(props); | |
String key = "key1"; | |
String userSchema = "{\"type\":\"record\"," + | |
"\"name\":\"myrecord\"," + | |
"\"fields\":[{\"name\":\"f1\",\"type\":\"string\"}]}"; | |
Schema.Parser parser = new Schema.Parser(); | |
Schema schema = parser.parse(userSchema); | |
GenericRecord avroRecord = new GenericData.Record(schema); | |
avroRecord.put("f1", "value1"); | |
ProducerRecord < Object, Object > record = new ProducerRecord < > ("topic1", key, avroRecord); | |
try { | |
producer.send(record); | |
} catch (Exception e) { | |
// may need to do something with it | |
} | |
// When you're finished producing records, you can flush the producer to ensure it has all been written to Kafka and | |
// then close the producer to free its resources. | |
finally { | |
producer.flush(); | |
producer.close(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment