Java ApacheCamel(版本>;=2.16):使用wireTap将消息路由到Springbean

Java ApacheCamel(版本>;=2.16):使用wireTap将消息路由到Springbean,java,spring,apache-camel,Java,Spring,Apache Camel,我刚从Camel 2.12升级到2.19.1,我的wireTap表达式出现了问题: from("direct:start") .wireTap("bean:myWireTapBean") .to("bean:doSomething"); 此代码在版本2.15之前运行良好,但从2.16开始,在Camel上调用myWireTapBean,并尝试将void结果解释为要调用的动态端点URI,并生成此异常: Stacktrace: org.apache.camel.NoTypeConve

我刚从Camel 2.12升级到2.19.1,我的
wireTap
表达式出现了问题:

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

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
是一个有效的端点


使用
wireTap
的推荐方法是什么?它不将提供的bean解释为一个表达式来计算动态URI,而是将bean用作端点?

是的,这有点麻烦,您需要添加一个小路由作为解决方法,并点击一个直接路由,然后调用bean。我已经记录了一个票证,可以让它直接与bean一起工作:因此您可以指定uri是否是动态的。@ClausIbsen感谢您在Camel 2.20.0中添加了
dynamicUri(false)
改进