大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。
笔者在kafka exception一文中介绍过笔者在生产中出现的一次bug,笔者针对此问题,总结了一下日常开发中使用kafka需要注意哪些问题:
- 使用kafka要考虑消费消息的速度合理设置,上一文中,笔者设置的参数正好是根据业务需要进行设置,具体情形具体分析
- kafka接口要考虑幂等性操作,避免消息重复消费也避免消息重复发送
- 在使用互斥同步锁前先判断当前是否有正在进行的锁操作并且判断线程是否持有锁,最后再finally中释放锁资源,避免出现死锁
- 使用spring集成kafka时,需要在外层处理异常,抛出的异常需要有补仓措施,避免发生死循环,导致消息消费越来越慢
- 根据具体业务设置消费者和生产者之间的平衡关系,避免出现消息生产过快来不及消费导致消息堆积,或者消费者太多,浪费资源。