0
骆驼2.17
我已经定义了一些路线,这路线包含类似的条目:
.to ("log:org.apache.camel?level=DEBUG")
我的logback配置包含:
<logger name="org.apache.camel" level="TRACE" />
上下文的定义开始:
<camel:camelContext id="someContext" ... trace="true">
当我开始骆驼,然后我看到骆驼正在进行,最后没有任何错误报告只是关闭。这看起来像:
2016-10-04 13:40:56,146 [localhost-startStop-1] TRACE org.apache.camel.model.ProcessorDefinitionHelper - There are 6 properties on: From[direct:process]
2016-10-04 13:40:58,042 [localhost-startStop-1] DEBUG org.apache.camel.spring.SpringCamelContext - onApplicationEvent: org.springframework.context.event.ContextClosedEvent[source=Root WebApplicationContext: startup date [Tue Oct 04 13:37:25 CEST 2016]; root of context hierarchy]
2016-10-04 13:40:58,066 [localhost-startStop-1] INFO org.apache.camel.spring.SpringCamelContext - Apache Camel 2.17.3 (CamelContext: someContext) is shutting down
我也一样:
onException(java.lang.Exception.class)
.handled(false)
.to("log:GeneralError?level=ERROR");
但是,这是更相关的交换处理,而不是启动。
是否有任何通用的方法来检查外面发生了什么? 例如:
- 是否有任何类丢失和类加载器失败?
- 或者是抛出的任何异常?
- 或某些连接失败?
完整的路由定义:
final RouteDefinition kafkaRouteDefinition = from("kafka:{{kafka.broker.endpoints}}" +
"?topic={{kafka.topic.name}}" +
"&groupId=my_group" +
"&autoOffsetReset=earliest" +
"&consumersCount={{kafka.consumer.count}}");
LOG.info("Kafka route definition: " + kafkaRouteDefinition.toString());
kafkaRouteDefinition
.routeId(Constants.ROUTE_ID_PROCESS_KAFKA_MESSAGES)
.to("log:org.apache.camel?level=DEBUG")
.process(new RawMessageProcessor()).id(RawMessageProcessor.class.getSimpleName())
.to("log:org.apache.camel?level=DEBUG")
.unmarshal(inputMessageFormat).id("ConvertRawMessageToLogline")
.to("log:org.apache.camel?level=DEBUG")
.process(new LoglineMessageProcessor()).id(LoglineMessageProcessor.class.getSimpleName())
.to("log:org.apache.camel?level=DEBUG")
.to(Constants.CAMEL_PROCESS_ENDPOINT)
.to("log:org.apache.camel?level=DEBUG")
.multicast().stopOnException()
.to("log:org.apache.camel?level=DEBUG")
.to(Constants.CAMEL_STORE_ENDPOINT
, Constants.CAMEL_INDEX_ENDPOINT
)
.to("log:org.apache.camel?level=DEBUG")
.end();
我有更多的少了这一切。问题在于骆驼的冗长。这是吃例外或其他错误报告,甚至没有写入日志。有时在某些TRACE级别的日志中,我看到例如参数为null左右。然后在其他日志行中,我看到“关机”或“停止”或其他 - 通常完全不清楚。我期望至少在WARN级别看到具体的消息,例如“预期的类型/值是String got int,Camel会关闭”。有了这样的报告,我可以看到原因和结果之间的联系。 –
用文件中的调试模式创建log4j.xml。你应该得到每一个步骤 – Ashish
@Aschish:我做到了,它没有太多帮助。我还加入了路由生成器:'onException(java。lang.Exception.class).handled(false).to(“log:GeneralError?level = ERROR”);',但它没有太大帮助。也许我错了,但是我对Kafka Camel插件的代码进行了代码审查,我发现它的异常处理非常少。也许问题发展到更高的水平。 –