1. 實(shí)現(xiàn)Random Partitioner(即對(duì)于每條消息框仔,發(fā)送到一個(gè)隨機(jī)的Partition)
import kafka.producer.Partitioner;
/**
* 隨機(jī)達(dá)到某一個(gè)節(jié)點(diǎn)
* Created by niewj on 2016/11/30.
*/
public class RandomPartitioner implements Partitioner {
@Override
public int partition(Object key, int numPartitions) {
/**
* 獲得一個(gè)0到1000之間的隨機(jī)數(shù)
*/
int randomNum = new Double(Math.random() * 1000).intValue();
return randomNum % numPartitions;
}
}
2. 通過實(shí)驗(yàn)驗(yàn)證Partitioner的實(shí)例個(gè)數(shù)及其是否需要保證線程安全
3. 請(qǐng)思考何時(shí)應(yīng)該使用同步Producer,何時(shí)應(yīng)使用異步Producer
追求高性能挺份,能容忍數(shù)據(jù)偶爾丟失的情況下浓若,可以使用異步Producer;
追求高可用,要求數(shù)據(jù)完整性的情況,可以使用同步Producer