2013-11-26 55 views
-1

我試圖通過netty和camel發送整個文件的內容;如何通過netty使用netty發送整個文件

<camel:route> 
       <camel:from uri="file://test/?fileName=sample.txt&amp;noop=true&amp;delete=false"/> 
       <camel:convertBodyTo type="java.lang.String"/> 
       <camel:to uri="netty:tcp://localhost:9012?textline=true&amp;sync=true"/>   
    </camel:route> 

我另一個路由在此終點消耗:

<camel:route> 
      <camel:from uri="netty:tcp://localhost:9012?textline=true&amp;sync=true"/> 
      <camel:process ref="fileCollector"/> 
    </camel:route> 

在FileCollector交換::過程()似乎含有由線的數據線 - -if的內容例如該文件是

This is line one

This is line two

的FileCollector ::處理()被調用每行一次,因此對我來說真的很難,因爲我的要求是處理整個文件,併發送應答回去。

+0

改善你的問題,因爲人們不希望/可以幫助你,如果你不顯示努力在你的問題 –

+0

修改了一些更多的細節問題,希望現在清楚。 –

回答

1

您正在使用textline = true編解碼器,它只是一行代碼編解碼器 - 終止符char是換行符char。

要傳輸整個文件,您需要構建自己的編解碼器,或者使用任何內置的編解碼器等長度。

你需要學習更多關於Netty編解碼器的如何做到這一點。

+0

我沒有拿起編碼器和解碼器,但現在,我對這個錯誤感到震驚:「java.lang.IllegalArgumentException:無法找到合適的setter屬性:解碼器,因爲沒有相同類型的setter方法:java。 lang.String和類型轉換可能:沒有類型轉換器可用於從類型java.lang.String轉換爲所需類型:org.jboss.netty.channel.ChannelHandler value #eofDecoder「;看起來像,Camel-Netty不會將bean名稱轉換爲所需的類類型;我只使用彈簧DSL,所以我覺得很困難。 –

+0

如果您沒有使用與< bean >一起使用spring xml,您需要在駱駝註冊表中註冊您的自定義編解碼器。 –

+0

貌似,這是與不兼容的Netty版本(使用最新的版本)錯誤;適用於Netty 3.x; <構造精氨酸值=」 4 「/> <構造精氨酸值=」 0 「/> <構造精氨酸值=」 4" /> \t但現在看的另一錯誤:java.lang.IllegalArgumentException:不支持的消息類型:類java.lang.String –