2017-09-08 83 views
0

我試圖根據屬性文件中的布爾值條件啓動XML DSL中的路由。但它有點不起作用。我不確定這是否是正確的做法。任何幫助表示讚賞,謝謝:)從XML DSL動態啓動駱駝路由

這是我blueprint.xml

<bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:property.properties"/> 
</bean> 

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> 


    <route autoStartup="${isTrue}"> 
     <from uri="pipe:prs:P" /> 
     <choice> 
      <when> 
       <simple>${headers.headerName} == 'DR91'</simple> 
       <process ref="reqType"></process> 
       <to uri="direct-vm:pipeRequestDR91" /> 
      </when> 
      <when> 
       <simple>${headers.headerName} == 'DR93'</simple> 
       <process ref="reqType"></process> 
       <to uri="direct-vm:pipeRequestDR93" /> 
      </when> 
     </choice> 
    </route> 

這是我的屬性文件 - property.properties

isTrue=true 

我得到的錯誤說:

org.apache.camel.RuntimeCamelException: 
org.apache.camel.FailedToCreateRouteException: Failed to create route 
route1: Route(route1)[[From[pipe:prs:P]] -> [Choice[[When[simple{${h... 
because of Error parsing [${isTrue}] as a Boolean. 
+0

您標記'藍圖osgi'你的問題,但你使用的是Spring'BridgePropertyPlaceholderConfigurer'。我認爲你的標記是錯誤的或者你使用BridgePropertyPlaceholderConfigurer。 – Ralf

+0

是的,我標記錯了。謝謝 –

回答

3

您應該使用駱駝的屬性佔位符語法是{{xxx}},如做

<route autoStartup="{{isTrue}}"> 
+0

謝謝克勞斯:)所以這工作,現在我陷入了一些其他問題。由於它啓動了路線以檢查它是否會在再次啓動時起作用,它會觸發我的bean。我們能避免嗎? \t