gpt4 book ai didi

java - 如何使用 Kafka(超过 15MB)发送大消息?

转载 作者:IT老高 更新时间:2023-10-28 11:33:44 26 4
gpt4 key购买 nike

我使用 Java Producer API 将字符串消息发送到 Kafka V. 0.8。如果消息大小约为 15 MB,我会收到 MessageSizeTooLargeException。我已尝试将 message.max.bytes 设置为 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 - 这是代理允许附加到主题的最大消息大小。此大小在压缩前经过验证。 (默认为代理的 message.max.bytes。)

我发现了第 2 点的困难之处 - 您不会收到来自 Kafka 的任何异常、消息或警告,因此在发送大消息时请务必考虑这一点。

关于java - 如何使用 Kafka(超过 15MB)发送大消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21020347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com