Запрос ISOMsg на несколько мультиплексоров параллельно

у меня есть ситуация, когда я должен отправить запрос ISOMsg на два канала параллельно, получить результат от обоих каналов и сравнить некоторые поля из обоих результатов, прежде чем ответить клиенту, который отправил запрос, пожалуйста, как мне это сделать. ниже то, что я сделал

 @Override
  public boolean process ( ISOSource isoSrc, ISOMsg isoMsg ) { 

      try{
        if(isoMsg.getMTI() .equals("0200")){

            MUX mux = (MUX) NameRegistrar.getIfExists("mux.jpos-host1-mux");

            ISOMsg reply = mux.request(isoMsg, 10 * 1000);

            if(reply != null){
                System.out.println(new String(reply.pack()));

                if(reply.getValue(39).equals("00")){
                    MUX mux_bank = (MUX) NameRegistrar.getIfExists("mux.jpos-host2-mux");
                    ISOMsg reply_bank = mux_bank.request(isoMsg, 10 * 1000);
                    if (isoMsg.hasField(39)) {
                            if(reply_bank.getValue(39).equals("00")){
                                reply.set(39, "00");
                                isoSrc.send(reply_bank);

                            }
                      }else{
                        //send a reversal to host1
                    }
                }else{
                    isoSrc.send(reply);
                }
            }
        }

      }catch(ISOException e){

      } catch (IOException ex) {
          Logger.getLogger(ISO_HAWK.class.getName()).log(Level.SEVERE, null, ex);
      }
      return false;
  }

это правильный способ сделать это (т.е. учитывая, что время ответа будет больше, потому что я должен получить ответ от хоста 1 перед отправкой запроса на хост 2 и т. д. или есть лучший способ добиться этого (параллельно) и как мне это сделать.


person Dexter    schedule 23.01.2018    source источник
comment
вы можете распараллелить использование потоков или асинхронный вызов мультиплексора и дождаться завершения обоих, вы можете сделать это, используя параллелизм java. Я мог бы привести пример где-нибудь в будущем в качестве ответа, но рекомендуемый способ - использовать участников, как в вашем другом вопросе stackoverflow.com/a /48407977/3444205.   -  person Andrés Alcarraz    schedule 23.01.2018