본문 바로가기
카테고리 없음

[삽질중]JNI로 배민 dll 함수 사용하기_재접속 확인

by 우딬 2021. 10. 3.

갑작스러운 장애로 배민이 종료 5초 안으로 재접속 로직을 만들라는 것인데,

전혀 정보가 없어서 github 이슈에서 정보를 얻을 수 있었다.

 

1. 정상적으로 종료를 시도하게 되면 FinalizeService 함수를 호출하고 이 호출의 결과로 모든 Callback 함수들의 등록이 해제됩니다. 즉 정상적으로 종료를 시도할 때는 RegisterDisconnectFunction에서 등록한 이벤트가 발생하지 않지만 의도하지 않게 접속이 종료된 경우 이 Callback 함수가 발생합니다.

 

이걸로 개발해야할건

1. 정상 종료시

FinalizeService함수로 내 프로그램이 종료될때 배민이랑 연결 끊기

 

2. 비정상 종료시

RegisterDisconnectFunction 이벤트가 발생하니 이 Callback 함수가 발생하면

배민을 다시 켜고 , 일단 등록된 콜백함수 지우고, 다시 등록하고, 초기화시키면 될거 같다.

 

그런데!!

재접속 파트에서 DisconnectFunction 이벤트가 발생하지 않았다.

그래서 뭐지? 당연히 비정상 종료 테스트를 할 줄 알았는데..

그래서 더 찾아보았다.

 

2. 재접속 확인 페이지에 접속하면 랜덤한 시간 내에 테스트 프로그램이 접속 가능한 상태가 됩니다.
접속 가능 상태가 된 이후로 5초 이내에 다시 접속을 시도하는지를 테스트 합니다.
즉 접속이 유지되어야 하는 상태에 접속이 끊겨 있다면 재접속을 시도하는 코드를 5초 이내의 간격으로 시도해주시면 됩니다.

 

그래서 배민이 실행되고 있는 코드를 5초마다 한번씩 돌리고

그 안에 배민을 강제 종료시켜서 다시 등록하도록 코드를 만들어 보기로 했다.

 

나중에 이 초가 멈추는 트리거를 보니 >> 다시 콜백함수 등록하는 시간이였다.

댓글