我使用netty组件进行两个系统之间的套接字通信,请求和 响应。
这是路线
<from uri="netty:tcp://localhost:61616?encoder=#encoder"/>
<to uri="netty:tcp://localhost:61618?decoder=#decoder"/>
<log message="Receive ${body}">
<to uri="file://data?fileName=data2&charset=utf-8"/>
一切正常,我发送的数据是缓冲类型,以及收到的响应。我可以使用log $ {body}将此数据视为String,但文件中没有任何内容可用于存储此数据。
我猜测camel使用转换器(从缓冲区到字符串)将正文记录为纯文本,但为什么不在文件中保存某些内容,使用默认转换器为此????
我很感激有关如何解决这个问题的任何意见。谢谢!!!
答案 0 :(得分:1)
由于您的paylaod是ByteBuffer,您需要显式转换为String或byte []
<from uri="netty:tcp://localhost:61616?encoder=#encoder"/>
<to uri="netty:tcp://localhost:61618?decoder=#decoder"/>
<convertBodyTo type="byte[]"/>
<log message="Receive ${body}">
<to uri="file://data?fileName=data2&charset=utf-8"/>
您甚至可以使用type =&#34; java.lang.String&#34;
请参阅链接http://camel.apache.org/type-converter.html
希望它有所帮助...