如何在骆驼蓝图中从身体切割前n个字节?

时间:2017-04-11 12:32:30

标签: java apache-camel blueprint-osgi

我正在使用apache camel路由和转换某些数据,并希望剪切正文的前n个字节。因此,我将通过读取除了frist n字节之外的流来转换正文。在骆驼蓝图中有一种聪明的方法吗?

2 个答案:

答案 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,但它对我有用。