Kafka:序列化后的消息大于您使用max.request.size配置配置的最大请求大小



获取以下错误(Kafka 2.1.0(:

2018-12-03 21:22:37.873错误37645-〔nio-8080-exec-1〕o.s.k.support.LoggingProducerListener:当发送具有密钥=‘ull’和有效载荷=‘{82,73,70,70,36,96、19、0、87、65、86、69、102、109、116、32、16、0、0、1、0、,68,-84,…'主题received_sound:org.apache.kafka.commun.errors.RecordTooLargeException:序列化时消息为1269892字节,大于使用max.request.size配置的最大请求大小配置

我尝试了各种SO帖子中的所有建议。

我的Producer.properties:

max.request.size=41943040
message.max.bytes=41943040
replica.fetch.max.bytes=41943040
fetch.message.max.bytes=41943040

Server.properties:

socket.request.max.bytes=104857600
message.max.bytes=41943040
max.request.size=41943040
replica.fetch.max.bytes=41943040
fetch.message.max.bytes=41943040

ProducerConfig(Spring Boot(:

configProps.put("message.max.bytes", "41943040");
configProps.put("max.request.size", "41943040");
configProps.put("replica.fetch.max.bytes", "41943040");
configProps.put("fetch.message.max.bytes", "41943040");

ConsumerConfig(SpringBoot(:

props.put("fetch.message.max.bytes", "41943040");
props.put("message.max.bytes", "41943040");
props.put("max.request.size", "41943040");
props.put("replica.fetch.max.bytes", "41943040");
props.put("fetch.message.max.bytes", "41943040");

我还在最后两个文件中将Strings改为数字。多次启动代理程序,并创建了新主题。我最初得到了org.apache.kafka.common.errors.RecordTooLargeException: The request included a message larger than the max message size the server will accept错误,通过这些更改得到了修复,但这个新错误仍然没有成功。

KafkaProducer.ensureValidRecordSize()中设置断点以查看发生了什么。

使用此应用

@SpringBootApplication
public class So53605262Application {
public static void main(String[] args) {
SpringApplication.run(So53605262Application.class, args);
}
@Bean
public NewTopic topic() {
return new NewTopic("so53605262", 1, (short) 1);
}
@Bean
public ApplicationRunner runner(KafkaTemplate<String, String> template) {
return args -> template.send("so53605262", new String(new byte[1024 * 1024 * 2]));
}
}

我得到

序列化时消息为2097240字节,大于您使用max.request.size配置配置的最大请求大小。

如预期;当我添加时

spring.kafka.producer.properties.max.request.size=3000000

(这相当于您的配置,但使用Spring Boot属性(,我得到

请求中包含的消息大于服务器将接受的最大消息大小。

如果调试没有帮助,也许你可以发布一个完整的小应用程序,展示你看到的行为。

如果Kafka属性是服务器上的文件,则可以更改消息大小。

用于默认的sever.properties文件

#/usr/local/kafka/config
#message.max.bytes=26214400

生产者.属性->

# the maximum size of a request in bytes
# max.request.size=26214400

对于难题相同

您应该以这种方式在生产者中设置配置

Props.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, "41943040");

相关内容

  • 没有找到相关文章

最新更新