2017-05-31 54 views
0

我對開始時的反應式編程有點新興。在參加了關於reactor和spring 5.0的一些討論之後,我想自己試試這個編程模型。如何將兩個Flux <>對象組合成一個

我有一個應用程序使用WebClient從不同的API構建兩個Flux對象。我想將這2個對象組合成一個並將其返回給用戶。

的代碼示例是這樣的:

public class User { 
    private String username; 
    //getters and setters 
} 

public class Address { 
    private String street; 
    //getters and setters; 
} 

public class CompleteUser { 
    private String username; 
    private String address; 
    //getters and setters 
} 

現在在我的處理方法:

final Flux<User> = WebClient.create()...; 
final Flux<Address> = WebClient.create()...; 
final Flux<CompleteUser> = //somehow compose this two types into one 

我應該使用從反應器API用什麼方法來實現這一目標?我發現了一些方法來編寫諸如combineLatest之類的對象,但是在這種情況下,我想要編寫第一個Flux的第一個項目和第二個Flux的第一個項目等。

回答

1

Flux.zip靜態方法正是您在尋找的。對於2個來源的組合,您可以提供一個BiFunction來產生結果。

Flux<CompleteUser> complete = Flux.zip(fluxUser, fluxAddress, (u, a) -> new CompleteUser(u, a)); 
//if the ctor perfectly matches, you can also use CompleteUser::new 
相關問題