我正在使用apache camel路由和转换某些数据,并希望剪切正文的前n个字节。因此,我将通过读取除了frist n字节之外的流来转换正文。在骆驼蓝图中有一种聪明的方法吗?
答案 0 :(得分:1)
开箱即用不支持此功能。它取决于java对象类型保存数据的位,即它是InputStream或byte []还是String或其他东西。
你是否每次都需要跳过固定数量的字节,还是取决于?如果字节数少于数字怎么办?即你最终得到更复杂的逻辑,最好编写一些java代码来正确处理。
如果你真的必须使用XML,那么你可以尝试内联groovy并使用Camels groovy语言,你可以在蓝图xml文件中使用它。
答案 1 :(得分:0)
一位同事给了我一个很好的暗示,我认为这是我正在寻找的答案:
<convertBodyTo type="byte[]"/>
<transform>
<spel>#{T(java.util.Arrays).copyOfRange(body, n, body.length)}</spel>
</transform>
其中n是我想要从ByteArrayOutputStream的开头剪切的字节数。我认为这是一个解决方案,不是吗?
当然你必须在它周围建立一些检查和ExceptionHandling,但它对我有用。