Spring云数据流http源kafka应用请求体内存大小问题

Spring cloud data flow http source kafka application request body memory size issue

我在 spring 云数据流中遇到 HTTP 源应用程序问题。

org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
    at org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.java:98) ~[spring-core-5.3.10.jar:5.3.10]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
    |_ checkpoint ? org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.cloud.sleuth.instrument.web.TraceWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? HTTP POST "/" [ExceptionHandlingWebHandler]

当我尝试 post 向 HTTP 端点发送具有巨大正文的 HTTP 请求时,会发生这种情况。

我已经尝试在部署中设置以下 属性 但对我没有帮助:

app.http.spring.codec.max-in-memory-size: 10MB

spring cloud starter HTTP Kafka source app 使用的版本是3.1.1

有人知道如何解决这个问题吗?

这可以像下面这样以独立的方式最少地复制

  1. 从以下位置下载 jar:https://mvnrepository.com/artifact/org.springframework.cloud.stream.app/http-source-kafka/3.1.1
  2. 运行 在本地端口 9092 上创建一个 Kafka 实例并创建一个名为“output”的主题。
  3. 运行 带有 java -jar http-source-kafka-3.1.1.jar
  4. 的罐子
  5. 向 localhost:8080 发出 HTTP post 请求,请求正文大小大于 700KB

感谢您提出这个问题!

事实证明,该 HTTP 源应用程序的 HttpSupplierConfiguration 没有考虑 Spring 引导自动配置的 ServerCodecConfigurer,包括提到的 spring.codec.max-in-memory-size 属性.

我有这样的修复程序:https://github.com/spring-cloud/stream-applications/pull/204,即将合并。

遗憾的是,开箱即用的应用程序没有简单的解决方法。 您可以考虑使用自定义 HTTP 入站端点实现您自己的源应用程序。