卡夫卡"停止工作"在大邮件入队后

时间:2016-02-03 01:56:53

标签: apache-kafka

我正在运行kafka_2.11-0.9.0.0和一个基于java的生产者/消费者。消息~70 KB一切正常。但是,在生产者将更大的70 MB消息排入队列之后,kafka似乎停止向消费者发送消息。即不仅传递大信息而且传递后续较小的信息。我知道生产者成功,因为我使用kafka回调进行确认,我可以在kafka消息日志中看到消息。

kafka配置自定义更改:

message.max.bytes=200000000
replica.fetch.max.bytes=200000000

消费者配置:

props.put("fetch.message.max.bytes",   "200000000");
props.put("max.partition.fetch.bytes", "200000000");

2 个答案:

答案 0 :(得分:0)

您需要增加消费者可以使用的消息的大小,这样就不会因为尝试阅读大的消息而陷入困境。

max.partition.fetch.bytes (default value is 1048576 bytes)
  

服务器将返回的每个分区的最大数据量。该   用于请求的最大总内存为#partitions *   max.partition.fetch.bytes。这个尺寸必须至少和   服务器允许的最大消息大小,否则可能是   生产者发送大于消费者可以获取的消息。如果说   发生这种情况时,消费者可能会因为尝试获取大量消息而陷入困境   某个分区。

答案 1 :(得分:0)

有助于提高Java堆大小。