如何通过Spring向Camel Context添加自定义StartupListener

时间:2014-01-09 07:55:56

标签: spring apache-camel

如何通过Spring向Camel Context添加自定义StartupListener?

这听起来很容易(比如添加ShutdownStrategy),但我觉得很难。 这里没有任何关于它: http://camel.apache.org/advanced-configuration-of-camelcontext-using-spring.html

感谢。

2 个答案:

答案 0 :(得分:2)

感谢克劳斯和罗伯特。我回答我的问题提出解决方案。

确实可以使用EventNotifier而不是StartupListener,虽然让StartupListener按预期工作会更容易:) 无论如何,以下代码就像一个魅力:

public class StartStopEmailEventNotifier extends EventNotifierSupport {

    @Override
    public void notify(EventObject event) throws Exception {
        try {
            if (event instanceof CamelContextStartedEvent) {
                //send start email notification
            }
            if (event instanceof CamelContextStoppingEvent) {
                //send stop email notification
            }
        } catch (Exception e) {
            LOG.error("Problem with sending email: ", e);
        }
    }

    @Override
    public boolean isEnabled(EventObject event) {
        if (event instanceof CamelContextStartedEvent || event instanceof CamelContextStoppingEvent) {
            return true;
        }
        return false;
    }
}

春天:<bean id="startStopEmailEventNotifier" class="com....StartStopEmailEventNotifier"></bean>

答案 1 :(得分:0)

乍一看this thread可能无关紧要,但问题与您的问题相同,但目的不同。看起来基于有针对性的讨论JIRA ticket已经创建。

请注意,在尖头线程中可以找到解决方法:)。