ISOMsg并行请求多个MUX

时间:2018-01-23 13:12:20

标签: java jpos

我有一种情况,我必须并行向两个通道发送一个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;
  }

这是一个正确的方法(即考虑响应时间会更大,因为我必须在向host2等发送请求之前从host1获得响应,或者是否有更好的方法来实现这一点(在并行)我该怎么做呢。

0 个答案:

没有答案