Sarama ClusterAdmin连接问题-管道损坏

问题描述

我正在使用sarama(1.27)ClusterAdmin管理kafka1.1.0中的主题。我管理kafka主题的应用程序正在作为REST服务运行。我的应用程序可以正常运行一会儿,我可以获取/创建/删除主题。

但是一段时间后,没有任何活动,新的主题请求将出错-写入tcp xxxxx:37888-> xxxxx:9092:写入:管道中断。

我遇到了这个How to fix broker may not be available after broken pipe

由于我的应用程序作为服务运行,因此如何防止管道破裂问题?我仅在应用程序退出时关闭ClusterAdmin。相同的ClusterAdmin连接用于服务所有请求。如果由于某种原因它为nil(通常在第一次初始化后它不是nil,所以通常不为nil,所以将重新使用相同的连接),我会为每个请求重新初始化clusterAdmin。

在服务每个请求之后,我应该关闭clusteradmin并为每个主题请求打开NewClusterAdmin(),还是我需要使用一个keepalive选项?

这是我现有的代码:

if admin == nil{
        admin,err := NewClusterAdmin([]string{"localhost:9092"},s.config)
        ..
}
topicMetadata,err := admin.DescribeTopics([]string{topicName})

解决方法

我也遇到了这个错误。我解决这个问题的方法是再试几次,例如2 到 10 次。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...