59.4. Camel 컨텍스트 구성
기본 CamelContext 빈의 이름만 변경하려면 Camel CDI에서 제공하는 @ContextName 한정자를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("jms:invoices").to("file:/invoices");
}
}
사용자 지정이 필요한 경우 CamelContext 클래스를 사용하여 사용자 지정 Camel 컨텍스트 빈을 선언할 수 있습니다. 그런 다음 @PostConstruct 및 @PreDestroy 라이프사이클 콜백을 수행하여 사용자 지정을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
@ApplicationScoped
class CustomCamelContext extends DefaultCamelContext {
@PostConstruct
void customize() {
// Set the Camel context name
setName("custom");
// Disable JMX
disableJMX();
}
@PreDestroy
void cleanUp() {
// ...
}
}Producer 및 disposer 메서드를 사용하여 Camel 컨텍스트 빈을 사용자 지정할 수도 있습니다. 예를 들면 다음과 같습니다.
class CamelContextFactory {
@Produces
@ApplicationScoped
CamelContext customize() {
DefaultCamelContext context = new DefaultCamelContext();
context.setName("custom");
return context;
}
void cleanUp(@Disposes CamelContext context) {
// ...
}
}마찬가지로 producer 필드를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@Produces
@ApplicationScoped
CamelContext context = new CustomCamelContext();
class CustomCamelContext extends DefaultCamelContext {
CustomCamelContext() {
setName("custom");
}
}
예를 들어, setAutoStartup 메서드를 호출하여 컨테이너가 초기화될 때 Camel 컨텍스트 경로가 자동으로 시작되지 않도록 하는 등의 방법으로 이 패턴을 사용할 수 있습니다.
@ApplicationScoped
class ManualStartupCamelContext extends DefaultCamelContext {
@PostConstruct
void manual() {
setAutoStartup(false);
}
}