デフォルトの CamelContext
Bean の名前を変更するだけの場合は、Camel CDI によって提供される @ContextName
修飾子を使用できます。
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("jms:invoices").to("file:/invoices");
}
}
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("jms:invoices").to("file:/invoices");
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
それ以外の場合で、さらにカスタマイズが必要な場合は、任意の 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() {
// ...
}
}
@ApplicationScoped
class CustomCamelContext extends DefaultCamelContext {
@PostConstruct
void customize() {
// Set the Camel context name
setName("custom");
// Disable JMX
disableJMX();
}
@PreDestroy
void cleanUp() {
// ...
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
Producer メソッドと disposer メソッドを使用して、Camel コンテキスト Bean をカスタマイズすることもできます。以下に例を示します。
class CamelContextFactory {
@Produces
@ApplicationScoped
CamelContext customize() {
DefaultCamelContext context = new DefaultCamelContext();
context.setName("custom");
return context;
}
void cleanUp(@Disposes CamelContext context) {
// ...
}
}
class CamelContextFactory {
@Produces
@ApplicationScoped
CamelContext customize() {
DefaultCamelContext context = new DefaultCamelContext();
context.setName("custom");
return context;
}
void cleanUp(@Disposes CamelContext context) {
// ...
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
同様に、producer フィールド を使用できます。以下に例を示します。
@Produces
@ApplicationScoped
CamelContext context = new CustomCamelContext();
class CustomCamelContext extends DefaultCamelContext {
CustomCamelContext() {
setName("custom");
}
}
@Produces
@ApplicationScoped
CamelContext context = new CustomCamelContext();
class CustomCamelContext extends DefaultCamelContext {
CustomCamelContext() {
setName("custom");
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
このパターンは、たとえば、コンテナーが setAutoStartup
メソッドを呼び出して初期化するときに Camel コンテキストルートが自動的に開始されることを回避するために使用できます。
@ApplicationScoped
class ManualStartupCamelContext extends DefaultCamelContext {
@PostConstruct
void manual() {
setAutoStartup(false);
}
}
@ApplicationScoped
class ManualStartupCamelContext extends DefaultCamelContext {
@PostConstruct
void manual() {
setAutoStartup(false);
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow