본문으로 건너뛰기

시스템 폴링

BXI에서는 시스템과의 연계 시에 L4 Switch를 사용하지 않는 경우, L4 Switch의 Fail-Over 기능을 대신할 수 있는 기능을 제공한다.

정보

시스템에 대한 폴링에만 해당하며, 기관에 대한 폴링은 기관업무 혹은 커넥션에 설정하는 폴링ID로 처리한다.

주기적인 메시지 폴링 방식을 통해 이를 지원하며, 거래 처리를 위한 커넥션이 아닌 별도의 폴링 커넥션 등록과 폴링 메시지를 생성하기 위한 Customizing 프로그램 작성이 필요하다.

시스템 폴링 커넥션은 커넥션관리 > 커넥션정보 화면을 이용하여 등록 가능하며, 등록 시 지정된 시스템코드(SHL), 업무코드(HL01)를 사용해야 한다.

폴링커넥션 사용 시 주의점

  • 프로토콜구분: 시스템 폴링은 HTTP 방식을 사용하고 있기 때문에 HTTP/HTTPS 프로토콜만 설정이 가능하다.
  • 커넥션구분: 주기적으로 메시지를 전송하는 방식이므로 클라이언트로 설정해야 한다.
  • 헬스체크간격(초): 메시지를 전송하는 간격을 의미한다. 시스템의 정상, 장애 판단이 이루어지는 주기가 된다.
  • 단락조건횟수: 메시지를 전송하여 정상 응답을 수신하지 못한 경우, 해당 횟수만큼 메시지 전송을 재시도한다. 재시도는 실패 감지 후에 대기시간 없이 바로 수행되며, 해당 횟수가 초과되면 시스템을 장애로 판단한다.

폴링메시지 커스터마이징

BXI에서 제공하는 HealthCheckMessageCreateProcess 인터페이스를 구현하여 Customizing 할 수 있다.

@Component
public class HealthCheckMessageCreateProcessor implements HealthCheckMessageCreateProcess {
/**
* 메시지 생성
*
* @return
*/
@Override
public byte[] makeMessage() throws BxiException {
// 메시지 생성
Map<String, Object> message = new LinkedHashMap<String, Object>();
String guid = JavaUtil.createUid();
message.put("stdMsgLen", 344L);
message.put("stdMsgVer", 1L);
message.put("guid", guid);
message.put("guidSeq", 1L);
message.put("fstGuid", guid);
message.put("fstTrmsDttm", DateUtil.getCurrentDate(DateUtil.EMPTY_MILL_DATE_TIME_TYPE).substring(0, 14));
message.put("msgClssCd", "S");

String headerString = ConversionUtil.objectToJson(message);
return headerString.getBytes(CharsetUtil.UTF_8);
}

/**
* 응답 메시지 정상 여부 확인
*
* @param responseMessage
* @return
*/
@Override
public boolean checkMessage(byte[] responseMessage) throws BxiException {
// 응답여부 확인
String responseStr = new String(responseMessage, CharsetUtil.UTF_8);
Map<String, Object> message = ConversionUtil.jsonToMap(responseStr);
String msgClssCd = (String) message.get("msgClssCd");

if ("R".equals(msgClssCd)) {
return true;
} else {
return false;
}
}
}