我正在运行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");
答案 0 :(得分:0)
您需要增加消费者可以使用的消息的大小,这样就不会因为尝试阅读大的消息而陷入困境。
max.partition.fetch.bytes (default value is 1048576 bytes)
服务器将返回的每个分区的最大数据量。该 用于请求的最大总内存为#partitions * max.partition.fetch.bytes。这个尺寸必须至少和 服务器允许的最大消息大小,否则可能是 生产者发送大于消费者可以获取的消息。如果说 发生这种情况时,消费者可能会因为尝试获取大量消息而陷入困境 某个分区。
答案 1 :(得分:0)
有助于提高Java堆大小。