Kafka Consumer获取消息形式
Cunsumer是被动推还是主动拉
所有消息服务消费者获取消息都会有两种形式,一种是消费者被动的接收broker推送过来的消息,另一种是消费者主动到broker上去拿消息。
首先说明Kafka这个消息队列是采用的主动拉取消息的形式;接下来说一说push和pull的优缺点;
==push缺:==消息推送频率由broker控制,下游服务处理消息的速度跟不上推送速度容易把下游consumer搞崩溃了
push优: 消息系统都致力于让 consumer 以最大的速率最快速的消费消息
==pull优:==消息的处理速度由consumer自己控制,可根据自己的消费能力自己配置;不会出现consumer崩溃问题
pull缺: 如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,直到新消息到达。为了避免这点,Kafka 有个参数可以让 consumer阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发送)。