Lifecycle 서비스
이 서비스는 플러그인이 서비스가 종료될 때(예: 파드가 종료되거나 로컬 개발 중 Ctrl+C를 누를 때) 리소스를 정리하기 위한 훅(hook)을 등록할 수 있게 해줘요. 다른 핵심 서비스들도 내부적으로 같은 메커니즘을 활용해 스스로 깔끔하게 중지돼요.
출처: 문서
본문
이 서비스는 플러그인이 서비스가 종료될 때(예: 파드가 종료되거나 로컬 개발 중 Ctrl+C를 누를 때) 리소스를 정리하기 위한 훅(hook)을 등록할 수 있게 해줘요. 다른 핵심 서비스들도 내부적으로 같은 메커니즘을 활용해 스스로 깔끔하게 중지돼요.
서비스 사용하기
다음 예시는 example 백엔드 플러그인에서 lifecycle 서비스를 가져와 서비스가 종료될 때 오래 실행되는 인터벌(interval)을 정리하는 방법을 보여줘요.
import {
coreServices,
createBackendPlugin,
} from '@backstage/backend-plugin-api';
createBackendPlugin({
pluginId: 'example',
register(env) {
env.registerInit({
deps: {
lifecycle: coreServices.lifecycle,
logger: coreServices.logger,
},
async init({ lifecycle, logger }) {
// some example work that we want to stop when shutting down
const interval = setInterval(async () => {
await fetch('http://google.com/keepalive').then(r => r.json());
// do some other stuff.
}, 1000);
lifecycle.addShutdownHook(() => clearInterval(interval));
},
});
},
});