60.4. Camel 컨텍스트 구성
기본 CamelContext
8080의 이름을 변경하려면 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() { // ... } }
생산자 및 셰이퍼 메서드를 사용하여 Camel 컨텍스트 빈을 사용자 지정할 수도 있습니다. 예를 들면 다음과 같습니다.
class CamelContextFactory { @Produces @ApplicationScoped CamelContext customize() { DefaultCamelContext context = new DefaultCamelContext(); context.setName("custom"); return context; } void cleanUp(@Disposes CamelContext context) { // ... } }
마찬가지로 생산자 필드를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@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); } }