我看到一些使用
Spring和Apache Camel的非常简单的
Java应用程序的奇怪行为.
我在我的应用程序上下文中定义了下面的spring bean:
这是一个单一路线的驼峰环境.据我所知,当创建bean时,将启动一个新线程,该线程侦听传入的消息并将它们路由到我的eventConsumer.
我的应用程序的起点很简单:
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
}
问题是:
当我运行上面的简单应用程序时,日志输出显示camel上下文和路由已成功初始化,但随后应用程序立即终止.
但是,如果在初始化应用程序上下文后添加Thread.sleep(1000),则应用程序永远不会终止.这是我期望的行为,因为创建了一个新线程来监听传入的消息.
为什么我需要调用Thread.sleep来实现预期的行为?
这显然不是正确的方法 – 我做错了什么?
编辑[1]:日志中没有任何异常.无论是否调用Thread.sleep(1000),都会生成以下日志输出.
29 [main] INFO org.apache.camel.spring.handler.CamelNamespaceHandler - OSGi environment not detected.
1473 [main] INFO org.apache.camel.spring.SpringCamelContext - Apache Camel 2.9.0 (CamelContext: camelContext) is starting
1474 [main] INFO org.apache.camel.management.ManagementStrategyFactory - JMX enabled. Using ManagedManagementStrategy.
1541 [main] INFO org.apache.camel.management.DefaultManagementLifecycleStrategy - StatisticsLevel at All so enabling load performance statistics
1618 [main] INFO org.apache.camel.impl.converter.AnnotationTypeConverterLoader - Found 3 packages with 15 @Converter classes to load
1637 [main] INFO org.apache.camel.impl.converter.DefaultTypeConverter - Loaded 168 core type converters (total 168 type converters)
1650 [main] INFO org.apache.camel.impl.converter.AnnotationTypeConverterLoader - Found 2 packages with 3 @Converter classes to load
1651 [main] WARN org.apache.camel.impl.converter.DefaultTypeConverter - Overriding type converter from: StaticMethodTypeConverter: public static org.apache.activemq.command.ActiveMQDestination org.apache.activemq.camel.converter.ActiveMQConverter.toDestination(java.lang.String) to: StaticMethodTypeConverter: public static org.apache.activemq.command.ActiveMQDestination org.apache.camel.component.activemq.ActiveMQConverter.toDestination(java.lang.String)
1664 [main] INFO org.apache.camel.impl.converter.DefaultTypeConverter - Loaded additional 3 type converters (total 171 type converters) in 0.025 seconds
1946 [main] INFO org.apache.camel.spring.SpringCamelContext - Route: handleIncomingEvents started and consuming from: Endpoint[activemq://queue:myqueue?jmsMessageType=Text]
1958 [main] INFO org.apache.camel.spring.SpringCamelContext - Total 1 routes, of which 1 is started.
1958 [main] INFO org.apache.camel.spring.SpringCamelContext - Apache Camel 2.9.0 (CamelContext: camelContext) started in 0.485 seconds
编辑[2]:我正在使用这个ActiveMQ配置:
destroy-method="stop">