kafka使用心得

1、一个kafka分区会一直对应一个消费者线程,一个消费者线程会一直对应这几个kafka分区。除非消费者数量变更,分区和消费者的对应关系才会发生变更。
2、kafka消费者线程数量要小于等于分区数,不然会造成消费者资源浪费。
3、spring+kafka的话,推荐使用 @KafkaListener的写法 ,可参考https://www.jianshu.com/p/a64defb44a23,通过设置 

factory.setBatchListener(true); //批量消费
factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL_IMMEDIATE);  // Kafka的Ack机制 - 手动提交
kafkaConsumerConfigs.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);

这些配置,可以实现批量消费,手动提交偏移量(ack.acknowledge(); ),代码和设计上都更加优美。

注意点:
1)业务逻辑try...catch(Throwable e){},不能让业务异常影响到kafka的接收
2)打详细的异常日志,可追溯补偿
3)发生异常后需要邮件或者其他措施通知到开发者

4、kafka因为分区等原因,时序性无法得到保证,需要业务方发送数据时,多一个判别顺序字段(别用时间戳),下游可以通过这个字段判断消息的先后顺序。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值