【问题标题】:Sarama ClusterAdmin connection issue - broken pipeSarama ClusterAdmin 连接问题 - 管道损坏
【发布时间】:2021-08-02 15:11:16
【问题描述】:

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

但是在没有任何活动的情况下经过一段时间后,新的主题请求会出错 - write tcp xxxxx:37888->xxxxx:9092: write: broken pipe。

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

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

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

这是我现有的代码:

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

【问题讨论】:

    标签: apache-kafka sarama


    【解决方案1】:

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

    【讨论】:

    • 这不能回答问题,因此不应将其作为答案发布
    猜你喜欢
    • 2016-07-04
    • 2020-12-14
    • 2010-10-28
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    相关资源
    最近更新 更多