之前介绍了消费者提交offset和消费消息保持一致性,消费者group的rebalance操作以及消费者pull消息的流程,本次总结我们介绍如何通过多线程从kafka消费消息。
我们知道创建kafka topic命令是可以指定分区的个数以及复制因子(也就是分区副本的个数),命令如下:
#创建topic
kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 2 --partitions 2 --topic test
上面的命令是创建了一个名称为test的topic,有2个分区,每个分区有2个副本。通过多线程消费kafka分区的消息,可以提升效率,代码如下:
/**
* 提交消费请求的线程
* @author steven.xu
*/
public class ProcessThread extends CommonThread {
//业务处理器(线程池)
private ExecutorService serviceExecutor = null;
LogContext logContext = new LogContext("[ProcessThread]");
Logger log = logContext.logger(getClass());
private int threadcount ;
public ProcessThread( int threadNum) {
super(queue);
serviceExecutor = Executors.newFixedThreadPool(threadNum);
this.threadcount = threadNum;
}