Kafka Scala Producer API
官方example:
https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Producer+Example
构造Producer
构造一个kafka.javaapi.producer.Producer<K, V>
对象,K:分区key类型,V:消息类型
Properties props = new Properties();
props.put("metadata.broker.list", "broker1:9092,broker2:9092");//该配置项必须有,producer通过连接这些broker找到partition的leader,只要是集群中的broker就行,不一定要leader的
props.put("serializer.class", "kafka.serializer.StringEncoder");//序列化,这个类的输入决定了KeyedMessage<K,V>中V的类型,默认为kafka.serializer.DefaultEncoder,即直接传输byte[]
props.put("partitioner.class", "example.producer.myPartitioner");//分区规则,也有默认的,可以自定义
props.put("request.required.acks", "1");//发送消息成功后需要等待kafka的回应
ProducerConfig config = new ProducerConfig(props);
Producer<String, String> producer = new Producer<String, String>(config);
构造消息
构造消息kafka.producer.KeyedMessage<K,V>
,K V与上述相同
KeyedMessage<String, String> data = new KeyedMessage<K, V>(String topic, K key, V message);
//若无kay参数,将随机投递至一个分区
KeyedMessage<String, String> data = new KeyedMessage<K, V>(String topic, V message);
发送消息
producer.send(data);
关闭producer
producer.close();