最近线上遇到一个问题:在消费kafka
消息的时候如果长时间(大概半天到一天的时间
)队列里没有消息就可能再也消费不了。针对这个问题我们反复调试多次。线下模拟,调整代码,但貌似还是没有找到原因。但是只要重启消费进程就又可以继续消费。
解决方案
由于线上业务非常依赖kafka
的消费,但一时半会也没有找到原因,所以最后只能想一个临时的替换方案:
既然是需要重启,由于目前还没有上分布式调度中心
所以需要crontab
来配合调度:每隔一分钟会调用一个shell脚本
,该脚本会判断当前进程是否存在,如果存在则什么都不作,不存在则启动消费进程。
具体实现
消费程序:
需要配合以下这个shell脚本运行
:
再配合crontab
的调度:
即可。
总结
虽说处理起来很简单,但依然是治标不治本,依赖的东西比较多(shell脚本,调度
)。
所以也问问各位有没有什么思路:
生产配置:
- 三台
kafka、ZK
组成的集群。
其中也有其他团队的消费程序在正常运行,应该和kafka
的配置没有关系。