Apache camel 如何使用Main类standalone将EventNotifier添加到Camel

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

我正在尝试将EventNotifier添加到我的Apache Camel独立应用程序中,该应用程序使用Camel中的主类

我想添加一个EventNotifier,如本食谱示例中所示:

这是我的简单事件通知程序

@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());
        }
    };