5장. Camel Quarkus의 CDI(Context and DependencyECDHE)
CDI는 Quarkus 및 Camel Quarkus에서 핵심적인 역할을 수행하며 이를 위한 첫 번째 클래스 지원도 제공합니다.
예를 들어 Camel RouteBuilder 에 빈 및 구성 값을 삽입하기 위해 @Inject,@ConfigProperty 및 유사한 주석을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.apache.camel.builder.RouteBuilder;
import org.eclipse.microprofile.config.inject.ConfigProperty;
@ApplicationScoped
public class TimerRoute extends RouteBuilder {
@ConfigProperty(name = "timer.period", defaultValue = "1000")
String period;
@Inject
Counter counter;
@Override
public void configure() throws Exception {
fromF("timer:foo?period=%s", period)
.setBody(exchange -> "Incremented the counter: " + counter.increment())
.to("log:cdi-example?showExchangePattern=false&showBodyType=false");
}
}
- 1
@ApplicationScoped주석은@Inject및@ConfigProperty가RouteBuilder에서 작동하는 데 필요합니다.@ApplicationScoped빈은 CDI 컨테이너에서 관리하며 해당 라이프사이클은 일반RouteBuilder중 하나보다 약간 더 복잡합니다. 즉,RouteBuilder에서@ApplicationScoped를 사용하면 부팅 시간 페널티가 있으므로 실제로 필요할 때@ApplicationScoped로RouteBuilder에 주석을 달 수 있습니다.- 2
timer.period속성의 값은 예제 프로젝트의 gRPC/main/resources/application.properties에 정의됩니다.
작은 정보
자세한 내용은 QuarkusDependencyECDHE 가이드를 참조하십시오.
5.1. CamelContext액세스 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
CamelContext 에 액세스하려면 다음 명령을 실행하여 console에 삽입합니다.
import javax.inject.Inject;
import javax.enterprise.context.ApplicationScoped;
import java.util.stream.Collectors;
import java.util.List;
import org.apache.camel.CamelContext;
@ApplicationScoped
public class MyBean {
@Inject
CamelContext context;
public List<String> listRouteIds() {
return context.getRoutes().stream().map(Route::getId).sorted().collect(Collectors.toList());
}
}