partition的分配策略简单代码实现
先说说partition的好处:Partition的好处是可以并发的获取同类数据,提高效率。
第一步需要实现Partitioner对象。
public class ProducerPartitioner implements Partitioner<String> { public static final Logger LOG=LoggerFactory.getLogger(UserInfo.class); @Override public int partition(String key, int numPartitions) { LOG.info("ProducerPartitioner key:"+key+" partitions:"+numPartitions); return key.length() % numPartitions; }}在上面的partition方法中,值得注意的是,key我们是在构造数据发送对象时设置的,这个key是区分存储的关键,比如我想将我的数据按照不同的用户类别存储。
第二步中就是需要构造数据的时候设定:
/**选择用哪个类来进行设置partition*/props.put("partitioner.class", "org.kafka.partitioner.ProducerPartitioner"); /**构造数据发送对象**/
ProducerData<String,UserInfo> data=new ProducerData<String, UserInfo>("test","developerTest", msg);增加了对partition的配置,并且修改了ProducerData的参数,其中,中间的就是key(developerTest),如果不设置partition,kafka则随机的向broker中发送请求.
今天就总结这么多吧!

浙公网安备 33010602011771号