消费者

消费方式

consumer采用pull(拉)模式从broker中读取数据。

push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。他的目标是尽可能以最快速度传递消息,但是这样很可能造成消费者来不及处理消息,典型的表现就是拒绝服务以及网络阻塞。

而pull模式可以根据consumer的消费能力以适当的速率消费消息。pull模式的不足是,如果kafka没有数据,消费者可能会陷入循环中,一直返回空数据。

针对这一点,kafka的消费者在消费数据的时会出传入一个时长参数timeout,如果当前没有数据可消费,consumer会等待一段时间后再返回,这段时间长就是timeout