2013-10-24 54 views
0

我正在使用Spring DSL將JSON格式的數據轉換爲駱駝。 我寫了這樣的代碼,從GSON解析器獲取數據到駱駝春天

<bean id="mqtt" class="org.apache.camel.component.mqtt.MQTTComponent"/> 
    <bean id="gson" class="org.apache.camel.component.gson.GsonDataFormat"/> 
    <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> 
     <camel:route> 
      <camel:from uri="mqtt:bar?host=tcp://10.30.11.0:1883&amp;subscribeTopicName=apss/messages" /> 
      <unmarshal ref="gson" /> 
      <camel:choice> 
       <camel:when> 
        <!-- I dont knwo what to write here --> 
        <camel:to uri="stream:out" /> 
       </camel:when> 
       <camel:otherwise> 
        <camel:to uri="stream:out" /> 
       </camel:otherwise> 
      </camel:choice> 
     </camel:route> 
    </camel:camelContext> 

我想第一場與一個字符串比較和分析決定以後做什麼。 我知道GSON會將JSON字符串解析爲一個hashmap。所以我想用hashmap做一個get(0)。 但我不知道如何在春天做到這一點。有誰能夠幫助我?

回答

0

最後我得到了答案。 我正在把它給別人。

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
     <from uri="mqtt:apsssub?host=tcp://10.30.11.0:1883&amp;subscribeTopicName=apss/messages" /> 
      <unmarshal ref="gson" /> 
      <bean beanType="com.hk.MessageHeaderSetter" method="putMessageTypeInHeader" /> 
      <choice> 
       <when> 
        <simple>${headers.msg_type} == 'location_update'</simple> 
        <log message="Message type 1." /> 
        <to uri="jms:LOCATION_UPDATE_QUEUE" />method="updateLocation" /> 
       </when> 
       <otherwise> 
        <log message="Other message" /> 
        <log message="Headers ${headers}" /> 
        <to uri="stream:out" /> 
       </otherwise> 
      </choice> 
    </route> 
</camelContext> 

這裏在MessageHeaderSetter中的putMessageTypeInHeader將顯式地將消息類型放入頭中。

public void putMessageTypeInHeader(Exchange exchange) { 
     exchange.getIn().setHeader("msg_type", ((HashMap)exchange.getIn().getBody()).get("msg_type")); 
} 

我不知道爲什麼人們不迴應我的問題!