|  | @@ -1,78 +0,0 @@
 | 
	
		
			
				|  |  | -package producer;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import org.apache.kafka.clients.producer.KafkaProducer;
 | 
	
		
			
				|  |  | -import org.apache.kafka.clients.producer.ProducerConfig;
 | 
	
		
			
				|  |  | -import org.apache.kafka.clients.producer.ProducerRecord;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import java.time.Instant;
 | 
	
		
			
				|  |  | -import java.util.Properties;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -public class KafkaProducerApp {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    public static final String STRING_SERIALIZER = "org.apache.kafka.common.serialization.StringSerializer";
 | 
	
		
			
				|  |  | -    public static final String TOPIC = "my-topic";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    public static void main(String[] args) {
 | 
	
		
			
				|  |  | -        Properties props = new Properties();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // These are the 3 required properties.
 | 
	
		
			
				|  |  | -        // 1. Cluster membership: partition leaders, etc
 | 
	
		
			
				|  |  | -        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092, BROKER-1:9092, BROKER-2:9093");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // 2. How keys and values are serialized.
 | 
	
		
			
				|  |  | -        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, STRING_SERIALIZER);
 | 
	
		
			
				|  |  | -        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, STRING_SERIALIZER);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        KafkaProducer<String, String> myProducer = new KafkaProducer<String, String>(props);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -            for (int i = 0; i < 100; i++) {
 | 
	
		
			
				|  |  | -                Instant ts = Instant.now();
 | 
	
		
			
				|  |  | -                Double ss = ts.toEpochMilli() + ts.getNano() / 1E9;
 | 
	
		
			
				|  |  | -                ProducerRecord myMessage = new ProducerRecord(TOPIC, String.format("%3d : %09.3f", i, ss));
 | 
	
		
			
				|  |  | -                myProducer.send(myMessage); // Best practice: wrap in try..catch.
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        } catch (Exception e) {
 | 
	
		
			
				|  |  | -            e.printStackTrace();
 | 
	
		
			
				|  |  | -        } finally {
 | 
	
		
			
				|  |  | -            myProducer.close();
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    public static void createMessagesExample() {
 | 
	
		
			
				|  |  | -        // Message with only the required properties.
 | 
	
		
			
				|  |  | -        ProducerRecord myMessage = new ProducerRecord(
 | 
	
		
			
				|  |  | -                TOPIC, // Topic to which the record will be sent.
 | 
	
		
			
				|  |  | -                "My Message 1" // Message content, matching the serializer type for value
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Non-matching type: runtime exception
 | 
	
		
			
				|  |  | -        // ProducerRecord myBadMessage = new ProducerRecord(TOPIC, 3.14159);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        ProducerRecord myPartitionedMessage = new ProducerRecord(
 | 
	
		
			
				|  |  | -                TOPIC, // String Topic
 | 
	
		
			
				|  |  | -                1,  // Integer Partition
 | 
	
		
			
				|  |  | -                "My Message 1" // String Message
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        ProducerRecord myKeyedMessage = new ProducerRecord(
 | 
	
		
			
				|  |  | -                TOPIC, // String Topic
 | 
	
		
			
				|  |  | -                "Course-001",  // K key
 | 
	
		
			
				|  |  | -                "My Message 1" // String Message
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Adding optional properties
 | 
	
		
			
				|  |  | -        ProducerRecord msg3 = new ProducerRecord(
 | 
	
		
			
				|  |  | -                TOPIC, // String Topic
 | 
	
		
			
				|  |  | -                1, // Integer Partition
 | 
	
		
			
				|  |  | -                124535353325L, // Long timestamp, added in Kafka 0.10.
 | 
	
		
			
				|  |  | -                "Course-001", // K key: basis to determine partitioning strategy. Don't use blank or NULL.
 | 
	
		
			
				|  |  | -                // Key may contain additional message information, but adds overhead, depends on serializer.
 | 
	
		
			
				|  |  | -                "My Message 1" // V value
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -        // The actual TS being send with the message is defined in server.properties:
 | 
	
		
			
				|  |  | -        // log.message.timestamp.type = [CreateTime, LogAppendTime]
 | 
	
		
			
				|  |  | -        // - CreateTime: producer-set timestamp is used
 | 
	
		
			
				|  |  | -        // - LogAppendtime: broker-set to the time when the message is appended to the commit log. Overrides the producet-set one.
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -}
 |