60.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,例如: http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#producer_method
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
方法(例如:
@ApplicationScoped class ManualStartupCamelContext extends DefaultCamelContext { @PostConstruct void manual() { setAutoStartup(false); } }