我只是从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作为端点的表达式?