Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 针对ApacheKafka的带Spring的Spring反应式堆栈_Spring Boot_Spring Webflux_Spring Kafka_Project Reactor - Fatal编程技术网

Spring boot 针对ApacheKafka的带Spring的Spring反应式堆栈

Spring boot 针对ApacheKafka的带Spring的Spring反应式堆栈,spring-boot,spring-webflux,spring-kafka,project-reactor,Spring Boot,Spring Webflux,Spring Kafka,Project Reactor,简言之: 我正试图在使用ApacheKafka堆栈或其对的默认Spring与基于Reactor的应用程序之间做出选择 更多背景: 在我工作的公司中,我们正在开发一个高争议性应用程序,旨在将一组请求直接发布到Kafka代理。由于这是一个以API为中心的应用程序,预计每周会收到数百万个请求,因此我们决定使用基于SpringWebFlux和Kotlin的ProjectReactor的堆栈 在做了一些挖掘之后,我发现ApacheKafka的Spring有一个围绕设计的简单包装器,但是这个包装器缺少前面提

简言之: 我正试图在使用ApacheKafka堆栈或其对的默认Spring与基于Reactor的应用程序之间做出选择

更多背景:

在我工作的公司中,我们正在开发一个高争议性应用程序,旨在将一组请求直接发布到Kafka代理。由于这是一个以API为中心的应用程序,预计每周会收到数百万个请求,因此我们决定使用基于SpringWebFlux和Kotlin的ProjectReactor的堆栈

在做了一些挖掘之后,我发现ApacheKafka的Spring有一个围绕设计的简单包装器,但是这个包装器缺少前面提到的默认KafkaTemplate中的许多功能,比如:开箱即用的度量绑定器(用于prometheus集成)、相关的、广泛的文档,自动配置等

我试图理解,当使用默认实现而使用被动实现时,我真正放弃了什么。我是否放弃了背压功能,是否牺牲了应用程序中的反应堆栈?这将是未来的通行费吗?是否有人在使用反应性堆栈和非反应性解决方案方面有经验


我还对默认实现中促进的DLT流有一些担忧,比如策略

如果您的kafka消息侦听器需要执行IO工作(保存到数据库,进行http调用),您可能可以使用反应式kafka获得更高的消息处理吞吐量,所需线程更少。尽管额外的吞吐量和更多的内存需求可能是值得的,因为常规Kafka模板的简单性和Spring支持。我在SpringWebFlux应用程序中使用它,没有任何问题,因为它的处理发生在kafka侦听器线程中,该线程与反应式http处理事件循环分离。