繁体   English   中英

如何在骆驼蓝图中从正文中剪切前n个字节?

[英]How to cut the first n bytes from the body in a camel blueprint?

我正在使用apache骆驼路由和转换一些数据,并且想要剪切正文的前n个字节。 因此,我将通过读取第一个n字节以外的流来转换主体。 有骆驼蓝图中执行此操作的明智方法吗?

开箱即用不支持此功能。 这取决于哪个Java对象类型正在保存数据,即是InputStream还是byte []还是String或其他东西。

并且您是否需要每次都跳过固定数量的字节,还是取决于? 如果字节数少于数量怎么办? 也就是说,您最终得到了更复杂的逻辑,最好编写一些Java代码以正确处理。

如果您确实必须使用XML,则可以尝试内联groovy并使用可以在蓝图xml文件中使用的Camels groovy语言。

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

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

其中n是我要从ByteArrayOutputStream的开头剪切的字节数。 我认为这是一个解决方案,不是吗?

当然,您必须围绕它构建一些检查和ExceptionHandling,但是它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM