javadoc所说的Message.getBody()
方法,
请注意,如果邮件正文是基于流的...。
那么如何检查主体是否基于流?这样的支票
Object body = exchange.getIn().getBody();
if (body instanceof InputStream) {
不适用于文件。我正在编写通用代码,它应该对传入的流执行某些操作,并使非流对象完整无损,因此我谨慎地调用
Object body = exchange.getIn().getBody(InputStream.class);
因为我不知道使用纯字符串,列表或整数等会做什么。
答案 0 :(得分:1)
没有简单的单项检查可以涵盖100%的情况。骆驼在支持哪种有效载荷格式方面是开放式的,因此消息正文只是java.lang.Object
。因此,要检查其流式传输是否为基础,您需要检查流式传输类型,例如“ java.io.InputStream”,但是您还需要其他类型的文件,例如文件,以及来自第三方组件的流式传输数据。
Camel内置了流缓存(http://camel.apache.org/stream-caching),它支持大多数流类型,如果使用它,则可以检查正文是否为org.apache.camel.StreamCache
实例。