1

我阅读了关于spring cloud stream 3.0的文档,了解新使用java.util.function.[Supplier/Function/Consumer]来代表生产者,消费和生产,消费者,这应该是正确的。

但我不了解供应商。

该文件指出,对供应商的轮询用于一致地为供应商生成数据,并且不需要程序参与。

但是很多时候,我们需要在特定时间生成数据,例如网络请求,我找不到任何文档或示例。

它可能就像注入 Supplier 对象并调用 get() 方法一样简单,但是如何禁用轮询调用呢?

感谢所有提供信息的人。

4

1 回答 1

5

我们将更新我们将在几周内发布的 SR1 的文档,但这里是完整的代码,展示了如何完成您所描述的内容。我们依赖项目反应器中的 EmitterProcessor:

@SpringBootApplication
@Controller
public class WebSourceApplication {

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

    EmitterProcessor<String> processor = EmitterProcessor.create();

    @RequestMapping
    @ResponseStatus(HttpStatus.ACCEPTED)
    public void delegateToSupplier(@RequestBody String body) {
        System.out.println("Sending " + body);
        processor.onNext(body);
    }

    @Bean
    public Supplier<Flux<String>> supplier() {
        return () -> processor;
    }
}

接着and then curl -H "Content-Type: text/plain" localhost:8080/ -d Hello

于 2019-12-02T09:43:05.953 回答