Java 如何基于两个Mono调用的响应调用反应式服务
我有四个独立的反应式服务,我想将它们组合成一个端点。由于未知原因,它的行为出乎意料 第一次服务Java 如何基于两个Mono调用的响应调用反应式服务,java,netty,webclient,reactive,Java,Netty,Webclient,Reactive,我有四个独立的反应式服务,我想将它们组合成一个端点。由于未知原因,它的行为出乎意料 第一次服务 public Mono<CreateClientResponse> createClient(CreateClientRequest createClientRequest) { return requester.createClient(createClientRequest); } 公共Mono createClient(CreateClientReque
public Mono<CreateClientResponse> createClient(CreateClientRequest createClientRequest) {
return requester.createClient(createClientRequest);
}
公共Mono createClient(CreateClientRequest CreateClientRequest){
返回请求者.createClient(createClientRequest);
}
第二个已经被嘲笑了:
public Mono<Partner> getPartner() {
return Mono.just(new Partner("435397"));
}
公共Mono getPartner(){
返回Mono.just(新合伙人(“435397”);
}
第三:
public Mono<ClientAdviserResponse> allocate(String clientId, Partner partner) {
return requester.allocateHotLead(clientId, partner);
}
public Mono-allocate(字符串clientId,Partner){
返回请求者。allocateHotLead(clientId,partner);
}
第四:
public Mono<Void> createThread(int clientId) {
return requester.createThread(clientId);
}
public Mono-createThread(int-clientId){
返回请求者.createThread(clientId);
}
requester是一个使用WebClient创建和发送rest调用的对象。
单独来说,它的工作原理与预期相同,但我无法将它们合并到一个调用中。
当我使用此选项时:
public Mono<CreateClientResponse> createLead(CreateClientRequest createClientRequest) {
Mono<CreateClientResponse> createClientsResponse = createClient(createClientRequest);
Mono<Partner> partner = getPartner();
Mono.zip(createClientsResponse, partner)
.doOnNext(this::allocateAndCreateThread)
;
return createClientsResponse;
}
public Mono<Void> allocateAndCreateThread(Tuple2<CreateClientResponse, Partner> tuple) {
String clientId = tuple.getT1().getId();
allocate(clientId, tuple.getT2()).subscribe();
createThread(Integer.parseInt(clientId)).subscribe();
return Mono.empty();
}
公共Mono createLead(CreateClientRequest CreateClientRequest){
Mono createClientsResponse=createClient(createClientRequest);
Mono partner=getPartner();
Mono.zip(createClientsResponse,partner)
.doOnNext(此::allocateAndCreateThread)
;
返回createClientsResponse;
}
公共Mono allocateAndCreateThread(Tuple2 tuple){
字符串clientId=tuple.getT1().getId();
分配(clientId,tuple.getT2()).subscribe();
createThread(Integer.parseInt(clientId)).subscribe();
返回Mono.empty();
}
未调用allocateAndCreateThread方法。但是,当我使用此选项时:
public Mono<CreateClientResponse> createLead(CreateClientRequest createClientRequest) {
Mono<CreateClientResponse> createClientsResponse = createClient(createClientRequest);
Mono<Partner> partner = getPartner();
Mono.zip(createClientsResponse, partner)
.subscribe(this::allocateAndCreateThread)
;
return createClientsResponse;
}
public Mono<Void> allocateAndCreateThread(Tuple2<CreateClientResponse, Partner> tuple) {
String clientId = tuple.getT1().getId();
allocate(clientId, tuple.getT2()).subscribe();
createThread(Integer.parseInt(clientId)).subscribe();
return Mono.empty();
}
公共Mono createLead(CreateClientRequest CreateClientRequest){
Mono createClientsResponse=createClient(createClientRequest);
Mono partner=getPartner();
Mono.zip(createClientsResponse,partner)
.subscribe(此::allocateAndCreateThread)
;
返回createClientsResponse;
}
公共Mono allocateAndCreateThread(Tuple2 tuple){
字符串clientId=tuple.getT1().getId();
分配(clientId,tuple.getT2()).subscribe();
createThread(Integer.parseInt(clientId)).subscribe();
返回Mono.empty();
}
createClient被调用两次,但allocateAndCreateThread被调用
我做错了什么?
在配置中,Netty用作服务器