Apache Camel(版本> = 2.16):使用wireTap将消息路由到Spring bean

时间:2017-07-10 14:32:02

标签: java spring apache-camel

我只是从Camel 2.12升级到2.19.1并遇到我的#include <assert.h> #include <stdio.h> #define ASSERT(condition,...) assert( \ condition|| \ (fprintf(stderr,__VA_ARGS__)&&fprintf(stderr," at %s:%d\n",__FILE__,__LINE__)) \ ); 表达式问题:

wireTap

此代码在版本2.15之前正常工作,但是在Camel调用from("direct:start") .wireTap("bean:myWireTapBean") .to("bean:doSomething"); 上从2.16开始工作,并尝试将myWireTapBean结果解释为要调用的动态端点URI并产生此异常:

void

作为一种解决方法,我可以像这样定义路线:

Stacktrace: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: null to the required type: 
java.lang.String with value null
    at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:198)
    at org.apache.camel.processor.SendDynamicProcessor.resolveEndpoint(SendDynamicProcessor.java:144)
    at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:104)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
    at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
    at org.apache.camel.processor.WireTapProcessor$1.call(WireTapProcessor.java:137)
    at org.apache.camel.processor.WireTapProcessor$1.call(WireTapProcessor.java:133)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

from("direct:start") .wireTap("bean:myWireTapBean").ignoreInvalidEndpoint() .to("bean:doSomething"); 对我来说很奇怪,因为ignoreInvalidEndpoint()是有效的终点。

使用bean:myWireTapBean的推荐方法是什么?它不会将提供的bean解释为计算动态URI但使用bean作为端点的表达式?

0 个答案:

没有答案