小编Dar*_*erM的帖子

订阅在什么时候进行?(弹簧网络通量)

spring webflux什么时候进行订阅?我到处都读到必须订阅,否则不会发生任何变化。subscribe()在我使用 Spring Webflux 的短暂时间里,我从未在控制器或服务中见过两者。

我的疑问还在于,当使用flatMap()map()、... 等时,订阅会在什么时候发生?

我所读到的内容并不能真正解决我的疑虑。

public Flux method(){
    ....
    myFlux.flatMap(data -> {
          ....

    }).flatMap(e -> { .... });
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个异步问题,但每个问题flatMap同时运行?...所以有时我注意到的一些数据是空的。

spring reactive-programming spring-webflux

4
推荐指数
1
解决办法
6319
查看次数

如何返回包含 Reactive Mono 和 Flux 的 Reactive Flux?

我是反应式编程的新手,遇到了这个问题:

[
    {
        "customerDTO": {
            "scanAvailable": true
        },
        "bankAccountDTOs": {
            "scanAvailable": true,
            "prefetch": -1
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

数据传输对象:

public class ResponseClientDTO {
    private Mono<CustomerDTO> customerDTO;
    private Flux<BankAccountDTO> bankAccountDTOs;
}
Run Code Online (Sandbox Code Playgroud)

服务:

public Flux<ResponseClientDTO> getCustomerWithBankAccounts(String customerId){
    Flux<BankAccountDTO> bankAccounts = webClient
        .get()
        .uri(uriBuilder -> 
                uriBuilder.path("customers")
                .queryParam("customerId", customerId).build())
        .accept(MediaType.APPLICATION_JSON)
        .retrieve()
        .bodyToFlux(BankAccountDTO.class);
        
    
    Mono<CustomerDTO> cMono = findOne(customerId);
    
    ResponseClientDTO responseClientDTO = new ResponseClientDTO();
    responseClientDTO.setBankAccountDTOs(bankAccounts);
    responseClientDTO.setCustomerDTO(cMono);
    
    return Flux.just(responseClientDTO);
}
Run Code Online (Sandbox Code Playgroud)

我从另一个 API 查询端点,它返回一个Flux<BankAccounts>. 我想找到客户所有的银行账户。

java spring spring-webflux spring-webclient

1
推荐指数
1
解决办法
1850
查看次数