【问题标题】:Kafka Large message configuration support for Spring boot application producer consumerKafka Spring boot 应用生产者消费者大消息配置支持
【发布时间】:2019-04-30 03:51:13
【问题描述】:

当我尝试通过 Kafka 生产者发布时 在 Spring Boot 应用程序中,我收到 RecordTooLargeException 的错误。

错误是:

org.apache.kafka.common.errors.RecordTooLargeException: 序列化时消息为 1235934 字节,大于您使用 max.request.size 配置配置的最大请求大小。

我阅读了有关此问题的其他讨论,但没有得到任何合适的支持,因为我还必须从客户端发布并使用该消息。

请提供一个简短的配置步骤来帮助我。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    关于 Kafka 的好处是它有非常棒的异常消息,这些消息几乎是不言自明的。基本上是说你的信息太大了(我相信是你自己总结的)。

    如果您检查表中的docs for producer config 搜索max.request.size 以获得解释,它会显示:

    请求的最大大小(以字节为单位)。此设置将限制 生产者将在单个请求中发送到的记录批次数 避免发送大量请求。这也有效地限制了 最大记录批量大小。请注意,服务器有自己的上限 记录批量大小可能与此不同。

    您可以在生产者配置中配置此值,如下所示:

    properties.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, "value-in-bytes");
    

    但是,默认值对于 90% 的用例来说非常好。如果您可以避免发送如此大的消息,或者可能尝试压缩消息(这在谈论吞吐量时会产生奇迹),就像这样:

    properties.setProperty(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");
    

    还有 2 种其他压缩类型,但这种来自 Google,非常有效。除了压缩之外,您还可以调整 2 个其他值以获得更好的性能(batch.sizelinger.ms),但您必须针对您的用例进行测试。

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      • 2019-05-09
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多