Spring Boot Admin 2.x의 Notifier 변경 사항
Spring Boot Admin을 1.x에서 2.x로 올릴 때는 사용자 정의 Notifier 코드도 수정해야 했습니다. 알림 대상과 이벤트를 표현하는 클래스가 바뀌어 기존 import와 메서드 구현을 그대로 사용할 수 없었습니다.
당시 확인했던 변경 커밋과 2.x 코드에서 볼 부분을 정리합니다.
Application에서 Instance로 변경
모델 이름을 변경한 커밋 은 실행 중인 개별 대상을 Instance, 같은 이름을 가진 인스턴스 묶음을 application으로 구분한다고 설명합니다.
알림 코드에서 사용하는 대상도 이 변경을 따라갑니다. 기존 Application 객체를 참조했다면 2.x의 Instance와 관련 이벤트를 사용하는 구조로 맞춰야 합니다.
Notifier 메서드와 생성자 확인
2.0.5의 AbstractStatusChangeNotifier는 생성자에서 InstanceRepository를 받습니다. 실제 알림을 구현하는 메서드는 다음 형태입니다.
protected Mono<Void> doNotify(InstanceEvent event, Instance instance)이벤트와 인스턴스를 인자로 받고 Mono<Void>를 반환합니다. 기존 메서드의 인자 이름만 바꾸는 것으로 끝낼 수 없고, 생성자와 반환 타입, 알림 전송 코드도 해당 버전의 API에 맞춰야 합니다.
사용자 정의 구현을 수정할 때는 AbstractStatusChangeNotifier 와 상위 클래스인 AbstractEventNotifier 를 함께 보면 호출 관계를 확인할 수 있습니다.
업그레이드 후 알림 확인
컴파일 오류를 고친 다음에는 상태 변경이 알림까지 이어지는지 확인해야 합니다. 서버에 인스턴스가 보이는 것과 Notifier가 해당 이벤트를 받아 전송하는 것은 서로 다른 단계입니다.
이 글의 메서드 형태는 2.0.5 소스를 기준으로 정리했습니다. 다른 버전으로 올린다면 실제 사용하는 버전의 클래스와 설정을 함께 확인해야 합니다.