localrun 모드로 디버깅
localrun 모드로 디버깅 (Debug with Localrun Mode)
함수를 로컬 머신에서 스레드로 실행하면서 IDE로 중단점을 찍어 실제 데이터로 디버깅할 수 있어요. 이 문서에서는 localrun 모드의 개념과 사용 방법을 안내해요.
출처: 문서
본문
localrun 모드에서 함수는 Pulsar 클러스터에 실제 데이터를 소비하고 생산하며, 함수가 Pulsar 클러스터에서 실행되는 방식을 그대로 반영해요. 이 방식은 함수를 테스트하는 방법을 제공하고, 손쉬운 디버깅을 위해 함수 인스턴스를 로컬 머신에서 스레드로 시작할 수 있게 해줘요.
참고 localrun 모드 디버깅은 Pulsar 2.4.0 이상 버전에서 Java 함수에만 사용할 수 있어요.
localrun 모드를 사용하기 전에 다음 의존성을 추가해야 해요.
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-functions-local-runner-original</artifactId>
<version>${pulsar.version}</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.21.9</version>
</dependency>
예를 들어 함수를 다음과 같은 방식으로 실행할 수 있어요.
FunctionConfig functionConfig = new FunctionConfig();
functionConfig.setName(functionName);
functionConfig.setInputs(Collections.singleton(sourceTopic));
functionConfig.setClassName(ExclamationFunction.class.getName());
functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
functionConfig.setOutput(sinkTopic);
LocalRunner localRunner = LocalRunner.builder().functionConfig(functionConfig).build();
localRunner.start(true);
IDE를 사용해 함수를 디버깅할 수 있어요. 중단점을 설정하고 함수를 수동으로 한 단계씩 실행해 실제 데이터로 디버깅하세요.
다음 코드 예시는 localrun 모드에서 함수를 실행하는 방법을 보여줘요.
public class ExclamationFunction implements Function<String, String> {
@Override
public String process(String s, Context context) throws Exception {
return s + "!";
}
public static void main(String[] args) throws Exception {
FunctionConfig functionConfig = new FunctionConfig();
functionConfig.setName("exclamation");
functionConfig.setInputs(Collections.singleton("input"));
functionConfig.setClassName(ExclamationFunction.class.getName());
functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
functionConfig.setOutput("output");
LocalRunner localRunner = LocalRunner.builder().functionConfig(functionConfig).build();
localRunner.start(false);
}
}
더 알아보기 (Learn more)
- Pulsar Functions 디버깅 개요 — 다른 디버깅 방법을 확인해요.
- 단위 테스트 디버깅 — 테스트 기반으로 함수를 검증해요.
- Functions 배포 — 클러스터 모드 배포를 익혀요.