camel-http4 2.22-toD不起作用

时间:2018-08-11 10:02:40

标签: java apache-camel

动态路线(toD)中的骆驼动态uri似乎已从2.16.5迁移到2.22.0后停止为我工作。证明问题的测试路线:

<route>
    <from uri="timer://foo?fixedRate=true&amp;period=1000"/>
    <setHeader headerName="SMSURI">
        <constant>localhost:9090/</constant>
    </setHeader>
    <toD uri="https4://${header.SMSURI}?throwExceptionOnFailure=false"/>
</route>

然后出现以下异常:

2018-08-11T14:41:07,770 | INFO  | Camel (testContext) thread #27 - timer://foo | route5                           | 160 - org.apache.camel.camel-core - 2.22.0 | java.lang.IllegalArgumentException: Cannot find endpoint with scheme https4
    at org.apache.camel.runtimecatalog.AbstractCamelCatalog.endpointProperties(AbstractCamelCatalog.java:529)
    at org.apache.camel.http.common.HttpSendDynamicAware.prepare(HttpSendDynamicAware.java:57)
    at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:118)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
    at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:197)
    at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:79)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

我知道动态uri有两种替代方法,一种是设置Exchange.HTTP_URI,然后使用带有任意URL的静态路由“ to”,第二种是使用reciepientList。但是,我不喜欢使用'to'的第一个选项,因为我需要设置一个任意的url。我目前正在使用第二个选项receipientList这样的内容(请注意,setHeader仅在此处用于演示。该URL是动态检索的,并在我的项目的处理器类中设置):

<route>
    <from uri="timer://foo?fixedRate=true&amp;period=1000"/>
    <setHeader headerName="SMSURI">
        <constant>localhost:9090/</constant>
    </setHeader>
    <recipientList>
        <simple>https4://${header.SMSURI}?throwExceptionOnFailure=false</simple>
    </recipientList>
</route>

,这有效。但是,我真的很喜欢toD选项。

骆驼网站也说:

  

动态至-开箱即用

     

从骆驼2.16开始,有一个新的动态版本。   在Message Endpoint上查看更多详细信息。

http://camel.apache.org/how-to-use-a-dynamic-uri-in-to.html

有人可以帮助我了解是否已经通过http4取消了对toD的支持吗?还是这是一个错误?

PS:我正在使用blueprint xml从OSGI包内的Karaf 4.2容器中运行此代码。

0 个答案:

没有答案