我正在为kafka运行一个简单的消费者,例如:
int timeout = 80000;
int bufferSize = 64*1024;
consumer = new SimpleConsumer(host, port,timeout, bufferSize, clientName);
这可以运行几个小时,但我得到一个例外 稍后的 kafka.consumer.SimpleConsumer:由于套接字错误而重新连接:
java.nio.channels.ClosedChannelException
和消费者停止......以前有人遇到过这个问题吗?
答案 0 :(得分:1)
一个稍有不同的问题,但也许具有相同的根本原因和解决方案是answered here,相关部分:
您已关闭该频道,但仍在尝试使用它。
您的代码有几个问题。
首先,您的EOS测试失败。删除limit()== 0测试。那 不表示EOS,仅表示读取长度为零,这可以 随时会以非阻止模式发生。这并不意味着同行有 关闭了他的连接端,这并不意味着您应该关闭 你的结局。
第二,关闭通道也会关闭套接字。你应该关闭 仅通道,而不是套接字。
第三,关闭频道会取消键。您不需要关注 每次关闭都会取消。
您也可能无法检查准备好的密钥在 在使用循环之前先选择循环,例如阅读。