Parallel processing RxJava.toblock.tosingle()完全不返回

Parallel processing RxJava.toblock.tosingle()完全不返回,parallel-processing,rx-java,observable,Parallel Processing,Rx Java,Observable,我正在尝试对两个不同的REST服务进行并行调用,这两个服务返回不同类型的响应。所以我使用了observable.zip(…).toBlocking().single(),但它从未返回 这就是我正在做的 尝试使用rx zip对不同的服务进行并行调用 我正试着打电话 1.订单信息 2.billInfo @Service public class ParallelServiceCallImpl { ...//var declaration ... Observ

我正在尝试对两个不同的REST服务进行并行调用,这两个服务返回不同类型的响应。所以我使用了
observable.zip(…).toBlocking().single()
,但它从未返回

这就是我正在做的

  • 尝试使用rx zip对不同的服务进行并行调用
  • 我正试着打电话 1.订单信息 2.billInfo

        @Service
        public class ParallelServiceCallImpl {
        ...//var declaration ...
    
            Observable<OrderInfoResponse> getOrderInfoRsp(ServiceRequest serviceRequest) {
            return Observable.create((rx.Subscriber <? super OrderInfoResponse> s) -> {
            OrderInfoResponse ordrInfo = orderComponent.getOrderDetails(serviceRequest); // this component calls to end service
            });
        }
    
        Observable<BillInfoResponse> getBillInfoRsp(ServiceRequest serviceRequest) {
            return Observable.create((rx.Subscriber <? super BillInfoResponse> s) -> {
            BillInfoResponse billInfo = billInfoComponent.getBillingDetails(serviceRequest); // this component calls to end service
            });
        }
    
    
        public ServiceEndResponse getServiceBillFinance(ServiceRequest serviceRequest) {
            Observable<OrderInfoResponse> orderObservable = getOrderInfoRsp(serviceRequest);
            Observable<BillInfoResponse> billObservable = getBillInfoRsp(serviceRequest);
            Observable<ServiceEndResponse> responseObservable = Observable.zip(
                orderObservable,
                billObservable,
                (ordrInfo, billInfo) -> {
                    ServiceEndResponse serviceEndResponse = serviceMapper.endResponseMapper(ordrInfo, billInfo);
                    return serviceEndResponse;
                }
            );
    
            ServiceEndResponse serviceResponse = responseObservable.toBlocking().single();  // Not getting response 
            return serviceResponse;
    
        }
    }
    
    我想并行调用
    ProductComponent.getProducts(ServiceRequestServiceRequest,列出ProductID)
    以及以上两个服务

    不要使用
    create(OnSubscribe)
    ,背压和退订可能很难兑现。但是,当您使用
    create
    时,您没有向订户
    s
    发送任何项目,因此单个项目永远不会到达

    使用可调用的
    而不是
    创建

    Observable<BillInfoResponse> getBillInfoRsp(ServiceRequest serviceRequest) {
        return Observable.fromCallable(() -> 
            billInfoComponent.getBillingDetails(serviceRequest));
    }
    

    非常感谢@Dave,我最近在尝试rxJava,到目前为止我实现的都是对多个服务的顺序调用和对具有多个值的单个服务的并行调用。还请就我补充的第二点向我提出建议。谢谢
    Observable<BillInfoResponse> getBillInfoRsp(ServiceRequest serviceRequest) {
        return Observable.fromCallable(() -> 
            billInfoComponent.getBillingDetails(serviceRequest));
    }
    
    Scheduler scheduler = Schedulers.io();
    a
     .zipWith(b.subscribeOn(scheduler))
     .zipWith(c.subscribeOn(scheduler))
     .subscribe(subscriber);