首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Apache Kafka客户端何时抛出"Batch Expired“异常?

Apache Kafka客户端何时抛出"Batch Expired“异常?
EN

Stack Overflow用户
提问于 2016-01-15 00:08:35
回答 6查看 44.2K关注 0票数 43

使用Apache Kafka Java client (0.9),我尝试使用Kafka Producer class向代理发送一长串记录。

异步send method会立即返回一段时间,然后在短时间内开始阻塞每个调用。大约30秒后,客户端开始抛出异常(TimeoutException),并显示消息"Batch expired“。

在什么情况下会引发此异常?

EN

回答 6

Stack Overflow用户

发布于 2016-02-13 07:38:20

我在一个完全不同的上下文中得到了这个异常。

我设置了一个由zookeeper vm、broker vm和producer/consumer vm组成的迷你集群。我打开了服务器(9092)和zookeeper (2181)上的所有必要端口,然后尝试将来自消费者/发布者vm的消息发布到代理。我得到了OP提到的异常,但由于到目前为止我只发布了一条消息(或者至少我尝试过),解决方案不可能是增加超时或批处理大小。因此,我搜索并找到了这个邮件列表,它描述了我在尝试使用来自消费者/生产者vm (ClosedChannelException)的消息时遇到的类似问题:http://grokbase.com/t/kafka/users/152jsjekrm/having-trouble-with-the-simplest-remote-kafka-config,这个邮件列表中的最后一篇文章实际上描述了如何解决这个问题。

长话短说,如果同时遇到ChannelClosedExceptionBatch Expired异常,则可能需要在server.config文件中将此行更改为以下内容,然后重新启动代理:

advertised.host.name=<broker public IP address>

如果没有设置,它将回退到host.name属性(可能也没有设置),然后回退到InetAddress Java类的规范主机名,当然,这最终是不正确的,从而使远程节点感到困惑。

票数 32
EN

Stack Overflow用户

发布于 2016-01-22 04:12:08

控制发送到broker之前的时间的参数是linger.ms。默认值为0(无延迟)。

票数 3
EN

Stack Overflow用户

发布于 2017-10-05 17:41:03

我使用的是Kafka Java客户端0.11.0.0版。我也开始看到同样的模式,无法始终如一地生成大型消息。它传递的消息很少,还有一些消息失败了。(虽然通过的消息和失败的消息大小相同).In我的情况是,每个消息的大小都在60KB左右,这远远高于Kafka的默认batch.size 16kB,而且我的linger.ms也设置为默认值0。这个错误被抛出,因为生产者客户端在它可以从server.Basically接收到成功响应之前超时,在我的代码中,此调用超时:kafkaProd.send(pr).get()。要解决这个问题,我必须将生产者客户机的默认request.timeout.ms增加到60000

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34794260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档