Spring Kafka - 生产者:尝试发送长消息时出现超时异常
Spring Kafka - Producer: TimeoutException when trying to send long message
我正在尝试通过 Kafka 发送通常大小为 2mb 的 base64 编码字符串。我已经配置 Spring Kafka 生产者如下:
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 4194304);
configProps.put(ProducerConfig.BATCH_SIZE_CONFIG, 1);
configProps.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");
return new DefaultKafkaProducerFactory<>(configProps);
}
我不断收到以下错误:
Caused by: org.apache.kafka.clients.producer.BufferExhaustedException: Failed to allocate memory within the configured max blocking time 60000 ms.
我尝试过的事情:
configProps.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, 90000);
还有
configProps.put(ProducerConfig.BATCH_SIZE_CONFIG, 10);
还有
configProps.put(ProducerConfig.BATCH_SIZE_CONFIG, 0);
在自动创建主题时连接到 kafka 代理。即使在尝试上述修复的各种组合后,该错误仍然存在。
也尝试设置此 属性:
configProps.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 120000);
这应该能很好地工作,因为当前配置的消息大小更大,您需要进一步扩展它。
我正在尝试通过 Kafka 发送通常大小为 2mb 的 base64 编码字符串。我已经配置 Spring Kafka 生产者如下:
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapAddress);
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 4194304);
configProps.put(ProducerConfig.BATCH_SIZE_CONFIG, 1);
configProps.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");
return new DefaultKafkaProducerFactory<>(configProps);
}
我不断收到以下错误:
Caused by: org.apache.kafka.clients.producer.BufferExhaustedException: Failed to allocate memory within the configured max blocking time 60000 ms.
我尝试过的事情:
configProps.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, 90000);
还有
configProps.put(ProducerConfig.BATCH_SIZE_CONFIG, 10);
还有
configProps.put(ProducerConfig.BATCH_SIZE_CONFIG, 0);
在自动创建主题时连接到 kafka 代理。即使在尝试上述修复的各种组合后,该错误仍然存在。
也尝试设置此 属性:
configProps.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 120000);
这应该能很好地工作,因为当前配置的消息大小更大,您需要进一步扩展它。