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包遇到网络抖动,

~~~

posted on 2024-03-28 20:03  江湖乄夜雨  阅读(60)  评论(0编辑  收藏  举报