2017-04-11 59 views
0

我使用apache camel路由和转换某些数据,并且想要剪切正文的前n个字节。所以我会通过读取除第一个字节之外的流来转换主体。在骆驼蓝图中有没有一种聪明的方式来做到这一点?如何在骆驼蓝图中切割身体的前n个字节?

+0

骆驼蓝图是什么意思?你的意思是你现在要写一个java类和5行代码,但是你只想在xml文件中写一些东西来做到这一点? –

+0

嘿@ClausIbsen - 完全。我尝试用纯XML找到一种方法 – Yannick

回答

0

一位同事给了我一个很好的提示,我觉得这是我一直在寻找的答案:

<convertBodyTo type="byte[]"/> 
<transform> 
    <spel>#{T(java.util.Arrays).copyOfRange(body, n, body.length)}</spel> 
</transform> 

其中n是我想从ByteArrayOutputStream开始削减字节数。我认为这是一个解决方案,不是吗?

当然你必须在它周围建立一些检查和ExceptionHandling,但它对我很有用。

1

开箱即用并不支持。它取决于java对象类型是保存数据的位,即它是InputStream还是byte []或String或其他。

您是否需要每次跳过固定数量的字节,还是取决于?如果字节少于数字呢?也就是说,你最终会得到更复杂的逻辑,最好是编写一些java代码来正确处理。

如果您确实必须使用XML,那么您可以尝试内联groovy并使用骆驼groovy语言,您可以从blueprint xml文件使用该语言。

+0

正文是一个ByteArrayOutputStream,它是每次都必须跳过的固定字节数。要处理可能少于n个字节的情况,这是个好主意! – Yannick