57.4. Camel コンテキスト設定
デフォルトの CamelContext Bean の名前を変更する場合は、Camel CDI によって提供される @ContextName 修飾子を使用できます。以下に例を示します。
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("jms:invoices").to("file:/invoices");
}
}
それ以外は、カスタマイズが必要な場合は、すべての CamelContext クラスを使用してカスタムの Camel コンテキスト Bean を宣言することができます。次に、カスタマイズを行うために @PostConstruct および @PreDestroy ライフサイクルコールバックを実行できます。以下に例を示します。
@ApplicationScoped
class CustomCamelContext extends DefaultCamelContext {
@PostConstruct
void customize() {
// Set the Camel context name
setName("custom");
// Disable JMX
disableJMX();
}
@PreDestroy
void cleanUp() {
// ...
}
}
プロデューサー メソッドや 破棄メソッド を使用して、Camel コンテキスト Bean をカスタマイズすることもできます。以下に例を示します。
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);
}
}