kafka消费者使用
墨初 知识笔记 100阅读
kafka 消费者必须的属性是什么?
答:上面代码中消费者必须的属性有4个,这里着重说一下group.id这个属性,kafka Consumer和Producer不一样,Consummer中有一个Consumer group (消费组),由它来决定同一个Consumer group中的消费者具体拉取哪个partition的数据,所以这里必须指定group.id属性。 通过subscribe ()方法订阅主题具有消费者自动再均衡 (reblance)的功能,存在多个消费者的情况下可以根据分区分配策略来自动分配各个消费者与分区的关系。
什么是kafka?
答:Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 以时间复杂度为O (1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。 即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在线水平扩展。 Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker。 Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
为什么kafka没有更新位移?
答:假如,某个消费者poll消息后,应用正在处理消息,在3秒后Kafka进行了重平衡,那么由于没有更新位移导致重平衡后这部分消息重复消费。 手动提交有一个缺点,那就是当发起提交调用时应用会阻塞。 当然我们可以减少手动提交的频率,但这个会增加消息重复的概率(和自动提交一样)。 另外一个解决办法是,使用异步提交的API。 但是异步提交也有个缺点,那就是如果服务器返回提交失败,异步提交不会进行重试。 相比较起来,同步提交会进行重试直到成功或者最后抛出异常给应用。 异步提交没有实现重试是因为,如果同时存在多个异步提交,进行重试可能会导致位移覆盖。
如何在kafka服务器上验证程序是否发送成功?
答:如果不想用程序进行验证程序是否发送成功,以及消息发送的准确性,可以在kafka服务器上使用命令查看。 kafka消费这块应该来说是重点,毕竟大部分的时候,我们主要使用的是将数据进行消费。 bootstrap.servers: kafka的地址。