更新时间:2022-02-21 GMT+08:00
客户端使用建议
- 生产消息
- 消费消息
- consumer的owner线程需确保不会异常退出,否则会导致客户端没有发起消费请求,阻塞消费。
- 使用长连接poll模式消费消息,不要消费结束就关闭consumer通道,这样会导致频繁rebalance,阻塞消费。
- consumer需周期性poll(建议间隔为200毫秒),维持和server端的心跳,避免因为心跳超时导致consumer频繁加入和退出,阻塞消费。
- 消费线程退出要调用consumer的close方法,避免同一个组的其他消费者阻塞sesstion.timeout.ms的时间。
- consumer的session根据业务情况设置一个合理值,如30秒:session.timeout.ms=30000。
- consumer数量不能超过topic的分区数,否则会有consumer拉取不到消息。
- 确保处理完消息后再做消息commit,避免业务消息处理失败,无法重新拉取处理失败的消息。
- consumer拉取的消息本地缓存应有大小限制,避免OOM(内存溢出)。
- Kafka不能保证消费重复的消息,业务侧需保证消息处理的幂等性。