Golang操作kafka遇到网络问题重试的案例
项目地址
https://gitee.com/huoyingwhw/kratos_kafka
概览
0、实际中会遇到网络抖动会导致消费者有一小段时间与kafka连接遇到问题~
0、如何模拟网络问题?本地跑多个kafka实例直接关掉其中一个kafka服务??怎么模拟断网??
1、kafka-go与sarama都演示一下
2、一个consumer消费一个topic的例子;模拟网络问题可以把kafka服务关了~ 观察一下再开启kafka服务的话 有没有正确消费消息~
3、一个consumer消费多个topic的例子:模拟网络问题可以把topic删了,观察一下有没有正常消费其他topic的消息~实际中一个topic出问题但是另外的topic的消息会阻塞???
4-1、sarama返回的error做了封装,可以用它返回的error的枚举判断是否是实际中要用的网络异常~~
4-2、kakfa-go中没有方法将自己包中的Error暴露出来,但是我们可以看它的源码里面有一个 isTransientNetworkError方法,把它抄过来用它来判断网络错误即可~~
5、手动ACK消息还是自动ACK消息?sarama包与kafka-go包遇到网络抖动,
~~~