我有一种情况,我必须并行向两个通道发送一个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获得响应,或者是否有更好的方法来实现这一点(在并行)我该怎么做呢。