Apache camel 如何使用Main类standalone将EventNotifier添加到Camel
我正在尝试将EventNotifier添加到我的Apache Camel独立应用程序中,该应用程序使用Camel中的主类 我想添加一个EventNotifier,如本食谱示例中所示: 这是我的简单事件通知程序Apache camel 如何使用Main类standalone将EventNotifier添加到Camel,apache-camel,Apache Camel,我正在尝试将EventNotifier添加到我的Apache Camel独立应用程序中,该应用程序使用Camel中的主类 我想添加一个EventNotifier,如本食谱示例中所示: 这是我的简单事件通知程序 @Override public void notify(EventObject event) throws Exception { logger.info(event.toString()); } @Override public boolean isEnabled(Eve
@Override
public void notify(EventObject event) throws Exception {
logger.info(event.toString());
}
@Override
public boolean isEnabled(EventObject event) {
logger.info("Checked if enabled");
return true;
}
使用Java DSL,我想做如下事情:
context.getManagementStrategy().addEventNotifier(new MyEventNotifier());
Main上有几个方法似乎很有用:Main.getOrCreateCamelContext()和Main.getCamelContext()
getOrCreateCamelContext将创建一个上下文,但当调用main.run()时,该上下文将消失(Camel-1是唯一的上下文,但在main.run()之后,Camel-2是唯一的上下文)
getCamelContexts在调用main.run()之前为空
在Main创建上下文后,我尝试在另一个线程中添加EventNotifier,但日志中没有显示任何内容,因此我怀疑需要在启动上下文之前添加EventNotifier
有没有一种简单的方法可以做到这一点?我找到了一种方法:创建一个匿名内部类并重写postProcessCamelContext方法
Main main = new Main() {
@Override
protected void postProcessCamelContext(CamelContext camelContext) throws Exception {
super.postProcessCamelContext(camelContext);
camelContext.getManagementStrategy().addEventNotifier(new MyEventNotifier());
}
};
Main main = new Main() {
@Override
protected void postProcessCamelContext(CamelContext camelContext) throws Exception {
super.postProcessCamelContext(camelContext);
camelContext.getManagementStrategy().addEventNotifier(new MyEventNotifier());
}
};