问题描述
我有四个独立的响应式服务,我想将它们组合到一个端点中。由于未知原因,它的行为异常。
第一项服务
public Mono<CreateClientResponse> createClient(CreateClientRequest createClientRequest) {
return requester.createClient(createClientRequest);
}
第二个已经被嘲笑了
public Mono<Partner> getPartner() {
return Mono.just(new Partner("435397"));
}
第三:
public Mono<ClientAdviserResponse> allocate(String clientId,Partner partner) {
return requester.allocateHotLead(clientId,partner);
}
第四:
public Mono<Void> createThread(int clientId) {
return requester.createThread(clientId);
}
requester是一个对象,该对象使用WebClient创建并发送休息呼叫。 另外,它可以按预期工作,但我无法将它们合并为一个呼叫。 当我使用此功能时:
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();
}
未调用方法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,tuple.getT2()).subscribe();
createThread(Integer.parseInt(clientId)).subscribe();
return Mono.empty();
}
createClient被调用两次,但被调用allocateAndCreateThread。
我做错了什么? 在配置中,Netty用作服务器。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)