有没有集成spring云函数webflux + spring云流和http源

Is there an integration of spring cloud function webflux + spring cloud stream with http source

我正在尝试将 spring 云流与 spring 云函数 webflux

集成

因为他们在未来的版本中弃用 spring 云反应流 我正在尝试使用 spring 云函数 https://cloud.spring.io/spring-cloud-static/spring-cloud-stream/2.1.2.RELEASE/single/spring-cloud-stream.html#spring-cloud-stream-preface-notable-deprecations

Spring 云 Web 函数可以使用文档中的路径公开其函数的终点

https://cloud.spring.io/spring-cloud-static/spring-cloud-function/1.0.0.RELEASE/single/spring-cloud-function.html

从云流中我可以看到源需要定义为 供应商 https://cloud.spring.io/spring-cloud-static/spring-cloud-stream/2.1.2.RELEASE/single/spring-cloud-stream.html#_spring_cloud_function

但我的用例是从反应性 http 端点获取 POST 数据并摄取到 kafka,有什么方法可以从 spring 云功能网络和 spring 云实现它流 ?

来自 spring 云函数与 spring 云流的文档

@SpringBootApplication
@EnableBinding(Source.class)
public static class SourceFromSupplier {
    public static void main(String[] args) {
        SpringApplication.run(SourceFromSupplier.class, "--spring.cloud.stream.function.definition=date");
    }
    @Bean
    public Supplier<Date> date() {
        return () -> new Date(12345L);
    }
}

如果我 运行 我可以看到日期每 1 秒被插入到 kafka 中,如果我调用 localhost:/8080/date 这样的供应商的 get 端点会导致日期响应,是否存在使用 spring 云函数将 paylaod 从 post 注入到 kafka 的任何方法?

您的问题有助于发现一个问题,它与函数和流提供的自动配置之间的生命周期不一致有关。该问题以 Spring Cloud Functions 创建的休息点无法看到绑定的方式表现出来,因为它创建得更早

所以我们会尽快解决这个问题。同时,有一个解决方法需要您从 ApplicationContext 访问 output 通道(见下文):

@SpringBootApplication
@EnableBinding(Source.class)
public class SimpleFunctionRabbitDemoApplication {

  public static void main(String[] args) throws Exception {      
    SpringApplication.run(SimpleFunctionRabbitDemoApplication.class);
  }

  @Bean
  public Consumer<String> storeSync(ApplicationContext context) {
     return v -> {
        MessageChannel channel = context.getBean(Source.OUTPUT, MessageChannel.class);
        channel.send(MessageBuilder.withPayload(v).build());
     };
  }
}