java – Kafka:发送15MB消息

我使用Java Producer API向Kafka V. 0.8发送String消息。
如果消息大小是大约15 MB,我得到一个MessageSizeTooLargeException。
我已经尝试设置message.max.bytesto 40 MB,但我仍然得到异常。小消息工作没有问题。

(异常出现在生产者中,我在这个应用程序中没有消费者。)

我能做些什么来摆脱这个异常?

我的示例生产者配置

private ProducerConfig kafkaConfig() {
    Properties props = new Properties();
    props.put("metadata.broker.list", BROKERS);
    props.put("serializer.class", "kafka.serializer.StringEncoder");
    props.put("request.required.acks", "1");
    props.put("message.max.bytes", "" + 1024 * 1024 * 40);
    return new ProducerConfig(props);
}

错误日志:

4709 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce request with correlation id 214 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
4869 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce request with    correlation id 217 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5035 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce request with   correlation id 220 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5198 [main] WARN  kafka.producer.async.DefaultEventHandler  - Produce request with correlation id 223 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5305 [main] ERROR kafka.producer.async.DefaultEventHandler  - Failed to send requests for topics datasift with correlation ids in [213,224]

kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
at kafka.producer.async.DefaultEventHandler.handle(Unknown Source)
at kafka.producer.Producer.send(Unknown Source)
at kafka.javaapi.producer.Producer.send(Unknown Source)
您需要调整三个(或四个)属性:

>消费者端:fetch.message.max.bytes – 这将确定消费者可以获取的消息的最大大小。
>代理端:replica.fetch.max.bytes – 这将允许代理中的副本在群集内发送消息,并确保消息被正确复制。如果这太小,那么消息将永远不会被复制,因此,消费者将永远不会看到消息,因为消息将永远不会被提交(完全复制)。
>代理端:message.max.bytes – 这是代理从生产者接收的消息的最大大小。
>代理端(每个主题):max.message.bytes – 这是消息的最大大小,代理将允许附加到主题。此大小经过验证的预压缩。 (默认为broker的message.max.bytes。)

我发现了关于数字2的困难的方法 – 你不会得到任何异常,消息或Kafka的警告,所以一定要在发送大消息时考虑这一点。

http://stackoverflow.com/questions/21020347/kafka-sending-a-15mb-message

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – Kafka:发送15MB消息