시스템 폴링
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;
}
}
}